2012年8月13日

Zend Framework 的多模組( modules )設定

在 application 目錄下,新增 modules 目錄 (對照 application.ini 裡的設定)。
在modules 目錄下,新增各別的 modules 名稱,例如 admin,default 等。
在各別 module 目錄下(如 admin ),新增 controllers、models、views 三個目錄。
分別修改以下檔案:
開啟
\application\application.ini

加入
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" // 此目錄需對應上述實體目錄
resources.modules = ""
resources.frontController.defaultModule                 = "Default"   // 如果是 default 下的 controller 可以不用加注

開啟
\application\bootstrap.php

確認 class 名稱為:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {}

加入
    protected function _initFrontController() {
        $front = Zend_Controller_Front::getInstance();
        $front->setControllerDirectory(array(
            'default' => APPLICATION_PATH . '/modules/Default/controllers',
            'admin' => APPLICATION_PATH . '/modules/Admin/controllers'
        ));
        return $front;
    }

其中,
'default' => APPLICATION_PATH . '/modules/Default/controllers',

中的 default 為瀏覽器輸入的
http://you_web/default/index

中的 default , 而 admin 亦同,故可依自己的需求修改,後面的路徑亦需依實際路徑修改。

開啟 \application\modules\Default\bootstrap.php

確認 class 名稱為:
class Default_Bootstrap extends Zend_Application_Module_Bootstrap { }

開啟 \application\modules\Admin\bootstrap.php

確認 class 名稱為:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap { }

另外,由於 controller 如是 default 底下的 class,可以不加 default ,而其他,如本例中的 admin ,其 controller 就需要加上前綴。
例如:
\application\modules\admin\IndexController.php

中,的 class 名稱需為:
class Admin_IndexController extends Zend_Controller_Action { }

如果有其他的 controller ,亦需如此。

沒有留言:

張貼留言