++ed by:

68 PAUSE users
56 non-PAUSE users.

Florian Ragwitz
and 1 contributors


Catalyst::Controller - Catalyst Controller base class


  package MyApp::Controller::Search
  use base qw/Catalyst::Controller/;

  sub foo : Local {
    my ($self,$c,@args) = @_;
  } # Dispatches to /search/foo


Controllers are where the actions in the Catalyst framework reside. Each action is represented by a function with an attribute to identify what kind of action it is. See the Catalyst::Dispatcher for more info about how Catalyst dispatches to actions.


Like any other Catalyst::Component, controllers have a config hash, accessible through $self->config from the controller actions. Some settings are in use by the Catalyst framework:


This specifies the internal namespace the controller should be bound to. By default the controller is bound to the URI version of the controller name. For instance controller 'MyApp::Controller::Foo::Bar' will be bound to 'foo/bar'. The default Root controller is an example of setting namespace to '' (the null string).


Sets 'path_prefix', as described below.


Allows you to set constructor arguments on your actions. You can set arguments globally (for all actions of the controller) and specifically (for a single action). This is particularly useful when using ActionRoles (Catalyst::Controller::ActionRole) and custom ActionClasses.

        action_args => {
            '*' => { globalarg1 => 'hello', globalarg2 => 'goodbye' },
            'specific_action' => { customarg => 'arg1' },

In the case above the action class associated with specific_action would get passed the following arguments, in addition to the normal action constructor arguments, when it is instantiated:

  (globalarg1 => 'hello', globalarg2 => 'goodbye', customarg => 'arg1')


BUILDARGS ($app, @args)

From Catalyst::Component::ApplicationAttribute, stashes the application instance as $self->_application.


Returns the Catalyst::Action object (if any) for a given method name in this component.


Returns the private namespace for actions in this component. Defaults to a value from the controller name (for e.g. MyApp::Controller::Foo::Bar becomes "foo/bar") or can be overridden from the "namespace" config key.


Returns the default path prefix for :PathPrefix, :Local, :LocalRegex and relative :Path actions in this component. Defaults to the action_namespace or can be overridden from the "path" config key.


Finds all applicable actions for this component, creates Catalyst::Action objects (using $self->create_action) for them and registers them with $c->dispatcher.


Returns a list of Moose::Meta::Method objects, doing the MooseX::MethodAttributes::Role::Meta::Method role, which are the set of action methods for this package.

$self->register_action_methods($c, @methods)

Creates action objects for a set of action methods using create_action , and registers them with the dispatcher.


Called with a hash of data to be use for construction of a new Catalyst::Action (or appropriate sub/alternative class) object.



Returns the application instance stored by new()


Catalyst Contributors, see Catalyst.pm


This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.