Catalyst::Controller

Catalyst::Controller - базовый класс


Контроллеры - где действия расположены в Catalyst фреймворк. Каждое действие - это та же функция с атрибутами, которая показывает что она делает. См. Catalyst::Dispatcher для более полной информации.

Настройка

Наподобии Catalyst::Component,у контроллеров есть хеш настроек, доступный из $self->config из действий контроллера. Некоторые настройки используются во фреймворке Catalyst:

namespace
Определяет внутренне пространство имен контроллера, которое будет границей. По умолчанию контроллер ограничен URI версией имени контроллера. Например контроллер 'MyApp::Controller::Foo::Bar' будет ограничен 'foo/bar'. По умолчанию Root пример установки namespace to '' (пустая строка).

path
Устанавливает 'path_prefix', как описано ниже.

action
Позволяет установить аттрибуты, из которых диспетчер создает действие. Это позволяет вам 'rails style routes',или переписать некоторые из аттрибутов определяющих действия состоящих из Ролей. Вы можете установить аргументы глобально (для всех действий контроллера) или конкретно (для одного действия).

__PACKAGE__->config(
    action => {
        '*' => { Chained => 'base', Args => 0  },
        base => { Chained => '/', PathPart => '', CaptureArgs => 0 },
    },
 );

В случае выше, каждая подпункт в пакете становится в конец Chain с URI, так же под имя, для каждого подпункта, сцепленный с под именем base. Следовательно /example, вызовет сначала / затем example.

action_args
Позволяет установить аргументы для конструктора вашего действия. Вы можете установить аргументы глобально и конкретно. Это очень полезно, когда вы используете ActionRoles (Catalyst::Controller::ActionRole) и пользовательский ActionClasses

__PACKAGE__->config(
    action_args => {
        '*' => { globalarg1 => 'hello', globalarg2 => 'goodbye' },
        'specific_action' => { customarg => 'arg1' },
    },
 );
В примере выше, действие класса ассоциируется с specific_action, который возьмет следующие аргументы, в дополнение к обычным аргументам действия конструктора, когда он будет инициализирован.
(globalarg1 => 'hello', globalarg2 => 'goodbye', customarg => 'arg1')

Методы

 

BUILDARGS($app, @args)
Из Catalyst::Component::ApplicationAttribute утаивает экземляр приложения как $self->_application

$self->action_for('name')
Возвращает Catalyst::Action объект (если любой) для данного имени метода в этом компоненте.

$self->action_namespace($c)
Возвращает приватное пространство имен для действия в этом компоненте. По умолчанию из имени контроллера (для MyApp::Controller::Foo::Bar станет "foo/bar") или может быть перезаписан из "namespace" конфиг ключа.

$self->path_prefix($c)
Возвращает по умолчанию префикс для :PathPrefix, :Local, :LocalReges и относительный :Path действия в этом компоненте. Так же может быть переписан ключом "path" из конфига.

$self->register_actions($c)
Находит все подходящие действия для этого компонента, создает Catalyst::Action объекты (используя $self->create_action) для них и регистры их с $c->dispatcher

$self->get_action_methods()
Возвращает список Moose::Meta::Method объектов, выполняя MooseX::MethodAttributes::Role::Meta::Method роль, которая является набором методов действия для этого пакета.

$self->register_action_methods($c, @methods)
Создает объекты действия для набора методов действия используя create_action и регистры их с диспетчером.

$self->action_class(%args)
Используется при создании действия контроллера чтобы правильно определить базовый класс действия для использования.

$self->create_action(%args)
Вызывается с хешем данных чтобы использоваться при создании нового Catalyst::Action (или подходящего под/альтернативного класса) объекта.

$self->gather_action_roles(\%action_args)
Собирает список ролей, чтобы применить к действию с заданными %action_args.

$self->_application
$self->_app
Возвращает экземпляр приложения созданный с new()