Default_Bootstrap会覆盖Admin_Bootstrap

时间:2012-03-24 16:05:37

标签: zend-framework bootstrapping

在管理模块安装默认模块的布局和导航

应用/模块/默认/ Bottstrap.php

<?php
class Default_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initNavigation()
    {
        $layout = Zend_Layout::startMvc()->setLayout('layout');

        $config = new Zend_Config_Xml(APPLICATION_PATH.'/configs/navigation.xml','nav');
        $navigation = new Zend_Navigation($config);
        Zend_Registry::set('Zend_Navigation', $navigation);
    }
}

应用/模块/管理/ Bottstrap.php

<?php
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initNavigation()
    {
        $layout = Zend_Layout::startMvc()->setLayout('admin');

        $config = new Zend_Config_Xml(APPLICATION_PATH.'/configs/navadmin.xml','nav');
        $navigation = new Zend_Navigation($config);
        Zend_Registry::set('Zend_Navigation', $navigation);
    }
}

应用/ CONFIGS /的application.ini

;Modules
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "default"
resources.modules[] =
resources.frontController.actionhelperpaths.Default_Controller_Helper = APPLICATION_PATH "/modules/default/controllers/helpers"

;Layout
resources.layout.layoutpath = APPLICATION_PATH "/layouts"

;View
resources.view.doctype = "HTML5"
resources.view.encoding = "UTF-8"
resources.view.contentType = "text/html; charset=UTF-8"

2 个答案:

答案 0 :(得分:4)

在单模块应用程序中,布局和导航通常在单个应用程序级引导程序中初始化(有时通过引用应用程序资源插件)。

但是,在多模块应用程序中,所有模块引导都将运行。因此,最后一个运行最终会覆盖所有其他的。

对于依赖于知道请求了哪个模块的这些类型的任务,您可以使用带有routeShutdown()挂钩的前端控制器插件。每个模块X都可以注册自己的导航和布局插件,检查所请求的模块是否与X匹配。如果没有,请尽早保释。如果是,请执行初始化。

有关更多详细信息,请参阅MWOP关于模块引导主题的文章:

http://mwop.net/blog/234-Module-Bootstraps-in-Zend-Framework-Dos-and-Donts

答案 1 :(得分:0)

通过一些初始指令将程序加载到计算机中的技术,该初始指令使得能够从输入设备引入程序的其余部分。 以最少的财务资源启动(基于互联网的企业或其他企业)。