Zend导航renderMenu在视图中

时间:2011-03-14 16:06:24

标签: php zend-framework zend-navigation

我正在使用Zend Navigation来创建我的菜单。当我在布局脚本中使用$this->navigation( )时,菜单会完美呈现。但是当我尝试在视图脚本中使用相同的代码渲染相同的菜单时,没有任何内容被渲染。

这是我在引导程序中用来启动Zend_Navigation并将其附加到布局脚本的代码:

protected function _initNavigation( )
{
    $this->bootstrap( 'layout' );
    $layout = $this->getResource( 'layout' );

    $view = $layout->getView( );
    $config = new Zend_Config_Xml( APPLICATION_PATH . '/configs/navigation.xml', 'nav' );
    $navigation = new Zend_Navigation( $config );

    $view->navigation( $navigation );
    $view->addHelperPath( 'App/View/Helper/Navigation', 'App_View_Helper' );
}

我一直在研究这个问题,并想出我需要将以下代码添加到我的引导程序中:

protected function initView( ) { }

但我想知道为什么我需要放置这段无用的代码。根据{{​​3}}主题,我已经通过使用以下行在我的application.ini中引导视图资源:

resources.view.basePath = APPLICATION_PATH "/views"
resources.view.helperPath = APPLICATION_PATH "/views/helpers"

提前致谢!

1 个答案:

答案 0 :(得分:0)

你可以从ini中删除resources.view,其效果与bootstrap中的空initView()相同:view不会被引导

我想我猜是怎么回事。你在哪里配置导航?

upd:你为什么用这种奇怪的方式获取视图实例?

protected function _initNavigation( )
{
    $this->bootstrap( 'view' );
    $view = $this->getResource( 'view' );
    ///...
}

替换你的方法
protected function _initNavigationPages( )
{
    $this->bootstrap( 'navigation' );
    $navigation = $this->getResource( 'navigation' );

    $config = new Zend_Config_Xml( APPLICATION_PATH . '/configs/navigation.xml', 'nav' );
    $navigation->addPages($config);
}

添加到配置“ resources.navigation.storage.registry = true ”如果您希望在Zend_Registry中的“Zend_Navigation”键下注册或“ resources.navigation [] = < / strong>“存储在视图助手

查看辅助路径/前缀设置移动以查看配置