Catalyst: глобальное действие инициации
В рамках Catalyst есть глобальный init
sub(выполняется перед любым контроллером). я хочу установить некоторые config
переменная из БД (например, администратор ужина id
или адрес электронной почты администратора для настройки GPG).
я пытался использовать auto
и "начать" действия, но эти действия просто выполняются для соответствующего контроллера.
в Root.pm
файл:
sub auto :Private {
my ($self, $c) = @_;
my $config = $c->model('DB')->resultset('Config')->single();
$c->config->{var1} = $config->var1;
};
Когда я запрашиваю другой контроллер, как Controller2
а также begin
, $c->config->{var1}
был пуст..
1 ответ
Такая конфигурация принадлежит основной программе, т.е. MyApp.pm
, так что это установлено, прежде чем вы даже думаете о принятии запроса. Обычно вы не хотите настраивать подключение к базе данных во время каждого цикла запроса.
Ваш вопрос не совсем понятен, но если вам нужно настроить параметры базы данных для каждого запроса, то auto
саб в корневом контроллере Root.pm
было бы место, чтобы убедиться, что это произошло в верхней части каждого запроса.
Но я не могу не чувствовать, что здесь проблема XY...