[英]How to call multiple actions of multiple modules from different controller and combine the output?
[英]Call Modules Controller from Application Bootstrap
我之前曾問過一個這樣的問題,但我相信這是不同的(那只是一個普遍的問題)。
我實現了Zend_Navigation。
對於菜單,我使用DB Table來存儲菜單項,並且對Array-s進行了遞歸以獲得菜單項的樹。
所有這些操作都發生在名為“菜單”的模塊中。 里面我有:
Menu --
Controllers --
IndexController.php
Models--
DbTable--
Menu.php
Bootstrap.php
在索引控制器內部,我有一個function menuGenerator($menu_id)
因此,按照Zend_Navigation上的教程,可以在應用程序引導程序中初始化菜單。
我的應用程序引導程序中的函數如下所示:
public function _initMenus() {
$menuArray = new Menu_IndexController();
$outArray = $menuArray->menuGenerator(1);
$mainmenu = new Zend_Navigation($outArray);
$this->view->navigation($mainmenu);
}
它給了我一個錯誤:
Fatal error: Class 'Menu_IndexController' not found in D:\Server\xampp\htdocs\project\application\Bootstrap.php on line 8
那么,有什么想法我應該如何使其正常工作?
PS是否可以一次啟動2個新菜單? 例如:我需要1.主菜單2.頁腳菜單(指向文章的任何鏈接都很好)
默認情況下,Zend Framework的自動加載器不會以加載其他組件(模型,視圖助手,表單等)的相同方式自動加載控制器,因此PHP會拋出錯誤,指出找不到該類。 解決此問題的最快方法是在Bootstrap.php中明確包含控制器。 以下應該工作:
public function _initMenus() {
require_once('./Controllers/IndexController.php');
$menuArray = new Menu_IndexController();
$outArray = $menuArray->menuGenerator(1);
$mainmenu = new Zend_Navigation($outArray);
$this->view->navigation($mainmenu);
}
在 Bootstrap 期間調用控制器方法是非常不尋常的,因為控制器的動作依賴於許多引導任務。 在您的情況下,控制器方法menuGenerator()
實際上不是action ,因此大概不會有問題。
盡管如此,仍然很不尋常,我將menuGenerator()
方法移到其自己的類中。 然后在Bootstrap和控制器中調用該操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.