MasonX::Interp::WithCallbacks

Mason callback support via Params::CallbackRequest
Download

MasonX::Interp::WithCallbacks Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • David E. Wheeler
  • Publisher web site:
  • http://search.cpan.org/~dwheeler/

MasonX::Interp::WithCallbacks Tags


MasonX::Interp::WithCallbacks Description

Mason callback support via Params::CallbackRequest MasonX::Interp::WithCallbacks is a Perl module with subclasses HTML::Mason::Interp in order to provide a Mason callback system built on Params::CallbackRequest. Callbacks may be either code references provided to the new() constructor, or methods defined in subclasses of Params::Callback. Callbacks are triggered either for every request or by specially named keys in the Mason request arguments, and all callbacks are executed at the beginning of a request, just before Mason creates and executes the request component stack.This module brings support for a sort of plugin architecture based on Params::CallbackRequest to Mason. Mason then executes code before executing any components. This approach allows you to carry out logical processing of data submitted from a form, to affect the contents of the Mason request arguments (and thus the %ARGS hash in components), and even to redirect or abort the request before Mason handles it.Much of the documentation here is based on that in Params::CallbackRequest, although it prefers using HTML form fields for its examples rather than Perl hashes. But see the Params::CallbackRequest documentation for the latest on its interface.SYNOPSISIn your Mason component: % if (exists $ARGS{answer}) { < p >< b >Answer: < % $ARGS{answer} % >< /b >< /p > % } else { < form > < p >Enter an epoch time: < input type="text" name="epoch_time" / >< br / > < input type="submit" name="myCallbacker|calc_time_cb" value="Calculate" / > < /p > < /form > % }In handler.pl: use strict; use MasonX::Interp::WithCallbacks; sub calc_time { my $cb = shift; my $params = $cb->params; my $val = $cb->value; $params->{answer} = localtime($val || time); } my $ah = HTML::Mason::ApacheHandler->new ( interp_class => 'MasonX::Interp::WithCallbacks', callbacks => ); sub handler { my $r = shift; $ah->handle_request($r); }Or, in a subclass of Params::Callback: package MyApp::CallbackHandler; use base qw(Params::Callback); __PACKAGE__->register_subclass( class_key => 'myCallbacker' ); sub calc_time : Callback { my $self = shift; my $params = $self->params; my $val = $cb->value; $params->{answer} = localtime($val || time); }And then, in handler.pl: # Load order is important here! use MyApp::CallbackHandler; use MasonX::Interp::WithCallbacks; my $ah = HTML::Mason::ApacheHandler->new ( interp_class => 'MasonX::Interp::WithCallbacks', cb_classes => ); sub handler { my $r = shift; $ah->handle_request($r); }Or, just use MasonX::Interp::WithCallbacks directly: use MyApp::CallbackHandler; use MasonX::Interp::WithCallbacks; my $interp = MasonX::Interp::WithCallbacks->new ( cb_classes => ); $interp->exec($comp, %args); Requirements: · Perl


MasonX::Interp::WithCallbacks Related Software