Moving Catalyst::Manual from Catalyst-Runtime to Catalyst-Manual dist
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Actions.pod
diff --git a/lib/Catalyst/Manual/Actions.pod b/lib/Catalyst/Manual/Actions.pod
new file mode 100644 (file)
index 0000000..6cd5949
--- /dev/null
@@ -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<Hello> 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<Catalyst::Action> as a base class and decorate the C<execute> 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<execute> call. Pretty simple, huh?
+
+=head1 ACTIONS
+
+=head2 Catalyst::Action::RenderView
+
+This is meant to decorate end actions. It's similar in operation to 
+L<Catalyst::Plugin::DefaultEnd>, 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.