Во время настройки приложения еще нет объекта контекста, поскольку $ c представляет текущий запрос.
Если вы используете Chained, вы можете выполнить вызов в своем действии корневой цепочки.Если вы используете не связанные цепочки типы действий, такие как Local, Path и т. Д., Вы можете поместить начальное действие в свой корневой контроллер.
Однако, на мой взгляд, самый правильный путь - расширить представление.Вот пример кода:
package MyApp::View::HTML;
use Moose;
use MooseX::Types::Moose qw( ArrayRef Str );
use namespace::autoclean;
extends 'Catalyst::View::TT';
has common_assets => (
traits => [qw( Array )],
isa => ArrayRef[Str],
handles => {
common_assets => 'elements',
},
);
before process => sub {
my ($self, $ctx) = @_;
$ctx->assets->include($_)
for $self->common_assets;
};
1;
Затем вы можете настроить его следующим образом:
<view HTML>
common_assets foo.css
common_assets bar.js
</view>