0

我正在使用 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( ) { }

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

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

提前致谢!

4

1 回答 1

0

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

我想我猜到发生了什么。你在哪里配置你的导航?

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[] = ”中注册以存储在视图助手中

查看助手路径/前缀设置 移动到查看配置

于 2011-03-14T16:26:17.990 回答