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...

Другие вопросы по тегам