Zend навигация renderMenu в представлении

Я использую 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"

Заранее спасибо!

1 ответ

Вы можете удалить resources.view из ini с тем же эффектом, что и с пустым initView() в bootstrap: 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 [] =" для хранения в помощнике вида

просмотреть настройки вспомогательного пути / префикса перейти к просмотру конфигурации

Другие вопросы по тегам