簡體   English   中英

從應用程序引導程序調用模塊控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM