2015-10-14 58 views
0

中使用the Catalyst framework自动加载控制器到不同的库目录中是否可以自动搜索控制器和模型的另一个目录? lib/myapp/Controller/*中的东西会自动加载,我想要发生在lib2/myapp/Controller/*中的事情。在Catalyst

回答

0

我不知道有什么明显的方式可以完成,而不会与催化剂的非常深的内部结构相混淆。在开始如此强大的魔法之前,我建议你好好想想为什么你正在尝试这样做。

如果控制器属于myapp,他们应该生活在lib/myapp/Controller。如果您的广告代码由多个应用程序共享,则应该位于lib/shared/(或类似的内容中,而且您的主程序中也可能需要use lib "$HOME/lib/shared")。

然后,你需要在MYAPP共享代码,创建一个存根控制器,例如:

package MyApp::Controller::Foo; 
use Moose; 
extends 'Shared::Controller::Foo'; 
# or, if you prefer, 
# use base 'Shared::Controller::Foo'; 
1; 

...和MyApp::Controller::Foo将支持任何方法/措施是Shared::Controller::Foo

我明白这个解决方案的可扩展性是有限制的,但是如果你打了他们,我认为你需要重新评估你的应用的架构。

+0

确实,我自己并不确定这是一个好主意,我只是想知道是否很容易做到这一点......这个想法是,我想有一个网站的“基本”功能集哪些用户可以添加更多,如果他们想,我想保持文件夹分开,以使这更明显。我可以通过在“root”和“root_user”(比如说)中搜索视图来为“根”文件夹做到这一点。通过让用户将所有内容放在/ lib/user_added中,可以为/ lib做类似的工作,但是在那个“:Local”URL中会失去一点用处。 - 非常感谢答案。 – ozarfreo

+0

您可以在/ Controller下的子目录中允许用户控制器。可以将操作链接起来,以便URI符合现有名称空间。 – RET