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;h=667f1167188245892f035586415321924392cdd5;hp=0e0bb194ff90c2d7c1548c6183ae4d2d7bbb1865;hb=e8200f38d465b85ad84eb11718db1e61230ce73b;hpb=7ce05098c9b1df9078e709e5a724e821a3b3b00d diff --git a/lib/Catalyst/Manual/Actions.pod b/lib/Catalyst/Manual/Actions.pod index 0e0bb19..667f116 100644 --- a/lib/Catalyst/Manual/Actions.pod +++ b/lib/Catalyst/Manual/Actions.pod @@ -17,9 +17,9 @@ them. This is pretty simple. Actions work 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} ); - } + 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 @@ -35,23 +35,23 @@ 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::MyAction; - use Moose; - use namespace::autoclean; + package Catalyst::Action::MyAction; + use Moose; + use namespace::autoclean; - extends 'Catalyst::Action'; + extends 'Catalyst::Action'; - before 'execute' => sub { - my ( $self, $controller, $c, $test ) = @_; - $c->stash->{what} = 'world'; - }; + before 'execute' => sub { + my ( $self, $controller, $c, $test ) = @_; + $c->stash->{what} = 'world'; + }; - after 'execute' => sub { - my ( $self, $controller, $c, $test ) = @_; - $c->stash->{foo} = 'bar'; - }; + after 'execute' => sub { + my ( $self, $controller, $c, $test ) = @_; + $c->stash->{foo} = 'bar'; + }; - __PACKAGE__->meta->make_immutable; + __PACKAGE__->meta->make_immutable; Pretty simple, huh? @@ -63,50 +63,50 @@ inflexible. The solution to this is to use L, which would make the example above look like this: - package Catalyst::ActionRole::MyActionRole; - use Moose::Role; + package Catalyst::ActionRole::MyActionRole; + use Moose::Role; - before 'execute' => sub { - my ( $self, $controller, $c, $test ) = @_; - $c->stash->{what} = 'world'; - }; + before 'execute' => sub { + my ( $self, $controller, $c, $test ) = @_; + $c->stash->{what} = 'world'; + }; - after 'execute' => sub { - my ( $self, $controller, $c, $test ) = @_; - $c->stash->{foo} = 'bar'; - }; + after 'execute' => sub { + my ( $self, $controller, $c, $test ) = @_; + $c->stash->{foo} = 'bar'; + }; - 1; + 1; and this would be used in a controller like this: - package MyApp::Controller::Foo; - use Moose; - use namespace::autoclean; - BEGIN { extends 'Catalyst::Controller::ActionRole'; } + package MyApp::Controller::Foo; + use Moose; + use namespace::autoclean; + BEGIN { extends 'Catalyst::Controller::ActionRole'; } - sub foo : Does('MyActionRole') { - my ($self, $c) = @_; - } + sub foo : Does('MyActionRole') { + my ($self, $c) = @_; + } - 1; + 1; =head1 EXAMPLE ACTIONS -=head2 Catalyst::Action::RenderView +=head2 L 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. -=head2 Catalyst::Action::REST +=head2 L Provides additional syntax for dispatching based upon the HTTP method of the request. =head1 EXAMPLE ACTIONROLES -=head2 Catalyst::ActionRole::ACL +=head2 L Provides ACLs for role membership by decorating your actions.