我正在使用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"
提前致谢!
答案 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>“存储在视图助手
中查看辅助路径/前缀设置移动以查看配置