Zend:修改模块中的导航结构

时间:2012-06-27 09:24:38

标签: zend-framework module

这是我目前的情况:

我有一个xml来配置我的常规导航结构。 在application / Bootstrap.php中,我添加了以下函数:

protected function _initViewHelpers()
{
    $this->bootstrap('layout');
    $oLayout = $this->getResource('layout');
    $oView = $oLayout->getView();
    $oNavContainerConfig = new Zend_Config_Xml(CONFIGPATH . 'navigation.xml', 'nav');
    $oNavigationContainer = new Zend_Navigation($oNavContainerConfig);

    $aCurrentRole = $this->_auth->getStorage()->read();
    @$oView->navigation($oNavigationContainer)->setAcl($this->_acl)->setRole($aCurrentRole->role);
}

这是我目前的插件:

class Discount_Plugin_Module extends Zend_Controller_Plugin_Abstract
{
    public function routeShutdown(Zend_Controller_Request_Abstract $oRequest)
    {
        // init all module view controller stuff
    }
}

我想在运行时修改导航。我想添加模块特定的导航项。

我不知道导航结构如何从模块中进行mofify。

希望你能帮助我。

最高

1 个答案:

答案 0 :(得分:1)

为了完成同样的事情,我使用我创建的对象来构建菜单。您可以在此处找到我使用的代码:http://pastebin.com/FzChbVeV。我还使用帮助程序检查是否允许用户查看链接。如果您不想使用它,可以删除102到109行并编辑第111行。

之后,在我的模块的bootstrap.php中,我添加以下代码来添加菜单项:

    $menu = ZARD_Object_Module_Multimodmenu::getInstance();

    $menu->id = 'submenuid';
    $menu->label = 'Submenu';
    $menu->module = 'default';
    $menu->controller = 'index';
    $menu->action = 'index';
    $menu->addItem();

    $menu->id = 'amenuitem';
    $menu->label = 'Menu Item';
    $menu->module = 'modulename';
    $menu->controller = 'controllername';
    $menu->action = 'actionname';
    $menu->parent = 'submenuid';
    $menu->addItem();

之后,我在我的布局中加载菜单:

    $menu = ZARD_Object_Module_Multimodmenu::getInstance();
    echo $menu->getMenu();