X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FController.pm;h=f65ee101717fe7eb37fae75284cca851343d3c80;hp=ad88a515ae9dc1fa533cc99522b596e7bfe2d496;hb=b62c4f8b4b612b159ff6e02e350a818f6c6ee5c3;hpb=5dd46e24eedec447bdfbc4061ed683b5a17a7b0c diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index ad88a51..f65ee10 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -5,8 +5,7 @@ use Class::MOP; use Class::Load ':all'; use String::RewritePrefix; use Moose::Util qw/find_meta/; -use List::Util qw/first/; -use List::MoreUtils qw/uniq/; +use List::Util qw/first uniq/; use namespace::clean -except => 'meta'; BEGIN { @@ -662,10 +661,25 @@ arguments, when it is instantiated: From L, stashes the application instance as $self->_application. -=head2 $self->action_for('name') +=head2 $self->action_for($action_name) -Returns the Catalyst::Action object (if any) for a given method name -in this component. +Returns the Catalyst::Action object (if any) for a given action in this +controller or relative to it. You may refer to actions in controllers +nested under the current controllers namespace, or in controllers 'up' +from the current controller namespace. For example: + + package MyApp::Controller::One::Two; + use base 'Catalyst::Controller'; + + sub foo :Local { + my ($self, $c) = @_; + $self->action_for('foo'); # action 'foo' in Controller 'One::Two' + $self->action_for('three/bar'); # action 'bar' in Controller 'One::Two::Three' + $self->action_for('../boo'); # action 'boo' in Controller 'One' + } + +This returns 'undef' if there is no action matching the requested action +name (after any path normalization) so you should check for this as needed. =head2 $self->action_namespace($c) @@ -847,9 +861,9 @@ The following is exactly the same: package MyApp::Controller::Zoo; - sub foo : Local Does('Moo') { ... } # Catalyst::ActionRole:: - sub bar : Local Does('~Moo') { ... } # MyApp::ActionRole::Moo - sub baz : Local Does('+MyApp::ActionRole::Moo') { ... } + sub foo : Local Does('Buzz') { ... } # Catalyst::ActionRole:: + sub bar : Local Does('~Buzz') { ... } # MyApp::ActionRole::Buzz + sub baz : Local Does('+MyApp::ActionRole::Buzz') { ... } =head2 GET