在Catalyst框架中,有一个全局init
sub(在任何控制器之前执行)。我希望从DB中设置一些config
变量(如supper admin id
或管理员电子邮件以进行GPG配置)。
我尝试使用auto
和'begin'操作,但这些操作只是为其相应的控制器执行。
:
Root.pm
当我请求sub auto :Private {
my ($self, $c) = @_;
my $config = $c->model('DB')->resultset('Config')->single();
$c->config->{var1} = $config->var1;
};
和Controller2
等其他控制器时,begin
为空..
答案 0 :(得分:1)
这种配置属于主程序,即MyApp.pm
,因此在您考虑接受请求之前设置它。您通常不希望在每个请求周期中配置数据库连接。
您的问题并不完全清楚,但如果您 需要在每个请求上配置数据库设置,那么根控制器auto
中的Root.pm
子设置将是确保它发生在每个请求的顶部的地方。
但我无法帮助感觉到这里存在X-Y问题...