Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

catalyst::manual::actions(3pm) [debian man page]

Catalyst::Manual::Actions(3pm)				User Contributed Perl Documentation			    Catalyst::Manual::Actions(3pm)

NAME
Catalyst::Manual::Actions - Catalyst Reusable Actions DESCRIPTION
This section of the manual describes the reusable action system in Catalyst, how such actions 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. USING ACTIONS
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} ); } In this example, we expect the SayBefore action to magically populate stash with something relevant before "Hello" is run. In the next section we'll show you how to implement it. If you want it in a namespace other 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'). WRITING YOUR OWN ACTIONS
Implementing the action itself is almost as easy. Just use Catalyst::Action as a base class and decorate the "execute" call in the Action class: package Catalyst::Action::MyAction; use Moose; use namespace::autoclean; extends 'Catalyst::Action'; before 'execute' => sub { my ( $self, $controller, $c, $test ) = @_; $c->stash->{what} = 'world'; }; after 'execute' => sub { my ( $self, $controller, $c, $test ) = @_; $c->stash->{foo} = 'bar'; }; __PACKAGE__->meta->make_immutable; Pretty simple, huh? ACTION ROLES
You can only have one action class per action, which can be somewhat inflexible. The solution to this is to use Catalyst::Controller::ActionRole, which would make the example above look like this: package Catalyst::ActionRole::MyActionRole; use Moose::Role; before 'execute' => sub { my ( $self, $controller, $c, $test ) = @_; $c->stash->{what} = 'world'; }; after 'execute' => sub { my ( $self, $controller, $c, $test ) = @_; $c->stash->{foo} = 'bar'; }; 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'; } sub foo : Does('MyActionRole') { my ($self, $c) = @_; } 1; EXAMPLE ACTIONS
Catalyst::Action::RenderView This is meant to decorate end actions. It's similar in operation to Catalyst::Plugin::DefaultEnd, but allows you to decide on an action level rather than on an application level where it should be run. Catalyst::Action::REST Provides additional syntax for dispatching based upon the HTTP method of the request. EXAMPLE ACTIONROLES
Catalyst::ActionRole::ACL Provides ACLs for role membership by decorating your actions. AUTHORS
Catalyst Contributors, see Catalyst.pm COPYRIGHT
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. perl v5.14.2 2011-02-16 Catalyst::Manual::Actions(3pm)

Check Out this Related Man Page

Catalyst::Action::RenderView(3pm)			User Contributed Perl Documentation			 Catalyst::Action::RenderView(3pm)

NAME
Catalyst::Action::RenderView - Sensible default end action. SYNOPSIS
sub end : ActionClass('RenderView') {} DESCRIPTION
This action implements a sensible default end action, which will forward to the first available view, unless "$c->res->status" is a 3xx code (redirection, not modified, etc.), 204 (no content), or "$c->res->body" has already been set. It also allows you to pass "dump_info=1" to the url in order to force a debug screen, while in debug mode. If you have more than one view, you can specify which one to use with the "default_view" config setting and the "current_view" and "current_view_instance" stash keys (see Catalyst's "$c->view($name)" method -- this module simply calls "$c->view" with no argument). METHODS
end The default "end" action. You can override this as required in your application class; normal inheritance applies. INTERNAL METHODS
execute Dispatches control to superclasses, then forwards to the default View. See "METHODS/action" in Catalyst::Action. SCRUBBING OUTPUT
When you force debug with dump_info=1, RenderView is capable of removing classes from the objects in your stash. By default it will replace any DBIx::Class resultsource objects with the class name, which cleans up the debug output considerably, but you can change what gets scrubbed by setting a list of classes in $c->config->{'Action::RenderView'}->{ignore_classes}. For instance: $c->config->{'Action::RenderView'}->{ignore_classes} = []; To disable the functionality. You can also set config->{'Action::RenderView'}->{scrubber_func} to change what it does with the classes. For instance, this will undef it instead of putting in the class name: $c->config->{'Action::RenderView'}->{scrubber_func} = sub { undef $_ }; Deprecation notice This plugin used to be configured by setting "$c->config->{debug}". That configuration key is still supported in this release, but is deprecated, please use the 'Action::RenderView' namespace as shown above for configuration in new code. EXTENDING
To add something to an "end" action that is called before rendering, simply place it in the "end" method: sub end : ActionClass('RenderView') { my ( $self, $c ) = @_; # do stuff here; the RenderView action is called afterwards } To add things to an "end" action that are called after rendering, you can set it up like this: sub render : ActionClass('RenderView') { } sub end : Private { my ( $self, $c ) = @_; $c->forward('render'); # do stuff here } AUTHORS
Marcus Ramberg <marcus@thefeed.no> Florian Ragwitz <rafl@debian.org> COPYRIGHT
Copyright (c) 2006 - 2009 the Catalyst::Action::RenderView "AUTHOR" as listed above. LICENSE
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. perl v5.14.2 2011-01-05 Catalyst::Action::RenderView(3pm)
Man Page