2015-10-14 59 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