2013-04-08 93 views
1

我在各個模塊目錄內引導我的應用程序Zend_Application_Module_Bootstrap。我如何要求首先執行另一個模塊引導程序中的資源?如何在Zend Framework 1的另一個模塊的引導程序中執行模塊引導資源?

// app/modules/user/Bootstrap.php 
class User_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 
    protected function _initUser() 
    { 
    } 
} 

// app/modules/author/Bootstrap.php 
class Author_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 
    protected function _initAuthor() 
    { 
     $this->bootstrap('user'); // Fatal: Resource matching 'user' not found 
    } 
} 
+0

你確實明白,所有引導文件中的所有內容都會被混合在一起並且執行每個請求? ZF1明智的做法是隻將資源放入需要執行的引導程序中。我們把很多東西放到引導程序中可能會更好,因爲插件或一個條帶或另一個條帶的助手。對不起,沒有足夠向下滾動:) – RockyFord 2013-04-10 11:53:13

+0

@RockyFord是的,我想我會堅持插件,並聽取routeStartup。我想盡快識別用戶,因爲那樣我會根據他們的角色添加樣式表/腳本。你覺得自舉中的任何條件邏輯(除了檢測環境)是一個壞主意嗎? – danronmoon 2013-04-10 12:19:53

+0

如果你需要引導中的東西,那麼你需要它。只要意識到潛在的成本。爲了根據用戶角色加載資源,您可能能夠將該特定邏輯合併到ACL插件中(具體取決於您如何執行ACL)。如果您想加載用戶資源,您可能需要等待'routeShutdown'或'preDispatch',以便確定用戶,不要擔心在整個調度循環完成之前不會顯示任何內容。 – RockyFord 2013-04-13 11:22:19

回答

0

this thread從ZF1的郵件列表,你可以通過應用引導的模塊的資源訪問模塊,白手起家。

男人,多嘴。這就是我的意思是:

// app/modules/user/Bootstrap.php 
class User_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 
    protected function _initUser() 
    { 
    } 
} 

// app/modules/author/Bootstrap.php 
class Author_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 
    protected function _initAuthor() 
    { 
     $app = $this->getApplication(); // it's actually the application *bootstrap* 
     $app->bootstrap('modules'); 
     $modulesResource = $app->getResource('modules'); 
     $userBootstrap = $modulesResource->user; 
     $userBootstrap->bootstrap('user'); // should be cool 
    } 
} 

在我自己的經驗,只要需要超過一個模塊被引用的我的模塊級資源的一個 - 尤其是引導過程中 - 我只是把該資源最多的引導進入應用程序級別的引導程序。

+0

我覺得這是如此接近。我得到了'$ app-> bootstrap('modules')'的'循環資源依賴'錯誤,因爲它正處於啓動過程中,並沒有完全運行(我想我試圖啓動它再次)。如果我發表評論,我無法獲取模塊資源(返回null)。如果我的腳本正在引導我的模塊,我如何獲取它的資源? – danronmoon 2013-04-09 11:58:41

+0

在application/configs/application.ini中,除了''frontController.resources.modules [] ='聲明之外,你的引導程序中是否有'_initModules()'方法?這可能會導致你的循環依賴錯誤。 – 2013-04-09 12:55:55

+0

我有'resources.modules = []',並且在我的任何引導程序中都沒有_initModules方法。我不認爲這會對我的問題產生任何影響,但是我繼承了'Zend_Application_Module_Bootstrap'並讓我的模塊引導程序從該子類延伸。瀏覽程序,在引發異常之前,我在應用程序引導的$ _started數組中看到''modules'=> true'。 – danronmoon 2013-04-09 13:19:58

相關問題