【发布时间】:2012-03-26 03:33:57
【问题描述】:
__PACKAGE__->config(namespace => '');
我在我的 Catalyst 应用程序的根控制器Root.pm 中看到了此声明。
我所知道的是,该语句用于指定根控制器。
现在我想知道的是,这个语句还有什么用的,
意味着我可以使用它来指定其他控制器命名空间吗?如果是,如何?
【问题讨论】:
__PACKAGE__->config(namespace => '');
我在我的 Catalyst 应用程序的根控制器Root.pm 中看到了此声明。
我所知道的是,该语句用于指定根控制器。
现在我想知道的是,这个语句还有什么用的,
意味着我可以使用它来指定其他控制器命名空间吗?如果是,如何?
【问题讨论】:
手册中解释了这两个问题。阅读Actions in Catalyst::Manual::Intro。
应用范围的操作
[…] 代码
__PACKAGE__->config( namespace => '' );使控制器的行为就好像它的命名空间是空的一样。 [...] 一个空的命名空间使许多 URL 匹配属性,例如:Path和:Local匹配 URL 路径的开头(即应用程序根目录)。
覆盖命名空间
注意
__PACKAGE__->config->(namespace => ... )在匹配时可以用来覆盖当前的命名空间。所以package MyApp::Controller::Example;通常会使用example作为其匹配的命名空间,但如果这被__PACKAGE__->config( namespace => 'thing' );专门覆盖,它会使用命名空间thing来匹配。
【讨论】:
Application.pm 中使用相同的?也就是说,我想把它应用到所有的控制器上。