X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FActions.pod;fp=lib%2FCatalyst%2FManual%2FActions.pod;h=6cd5949f65f9af438f109690a3535b69c375bfe6;hp=0000000000000000000000000000000000000000;hb=cb93c9d7a46377666f9593736dcb87fad8f9d82e;hpb=169144c5a80729f40b9dcdf1a700149617a08045 diff --git a/lib/Catalyst/Manual/Actions.pod b/lib/Catalyst/Manual/Actions.pod new file mode 100644 index 0000000..6cd5949 --- /dev/null +++ b/lib/Catalyst/Manual/Actions.pod @@ -0,0 +1,67 @@ +=head1 NAME + +Catalyst::Manual::Actions - Catalyst Reusable Actions + +=head1 DESCRIPTION + +This section of the manual describes the reusable action system in +Catalyst, how they work, descriptions of some existing ones, and how to +write your own. Reusable actions are attributes on Catalyst methods +that allow you to decorate your method with functions running before or +after the method call. This can be used to implement commonly used +action patterns, while still leaving you full freedom to customize them. + +=head1 USING ACTIONS + +This is pretty simple. It works just like the normal dispatch attributes +you are used to, like Local or Private: + + sub Hello :Local :ActionClass('SayBefore') { + $c->res->output( 'Hello '.$c->stash->{what} ); + } + +In this example, we expect the SayBefore action to magically populate +stash with something relevant before C is run. In the next +section we'll show you how to implement it. If you want it in another +namespace than Catalyst::Action you can prefix the action name with a +'+', for instance '+Foo::SayBefore', or if you just want it under your +application namespace instead, use MyAction, like MyAction('SayBefore'). + +=head1 WRITING YOUR OWN ACTIONS + +Implementing the action itself is almost as easy. Just use +L as a base class and decorate the C call in +the Action class: + + package Catalyst::Action::SayBefore; + + use base 'Catalyst::Action'; + + sub execute { + my $self = shift; + my ( $controller, $c, $test ) = @_; + $c->stash->{what} = 'world'; + $self->NEXT::execute( @_ ); + }; + + 1; + +If you want to do something after the action, just put it after the +C call. Pretty simple, huh? + +=head1 ACTIONS + +=head2 Catalyst::Action::RenderView + +This is meant to decorate end actions. It's similar in operation to +L, but allows you to decide on an action +level rather than on an application level where it should be run. + +=head1 AUTHOR + +The Catalyst Core Team - see http://catalyst.perl.org/ + +=head1 COPYRIGHT + +This program is free software. You can redistribute it and/or modify it +under the same terms as Perl itself.