2011-03-14 3 views
0

Zend Navigation을 사용하여 메뉴를 만듭니다. 레이아웃 스크립트에 $this->navigation()을 사용하면 메뉴가 완벽하게 렌더링됩니다. 그러나 뷰 스크립트에서 동일한 코드로 동일한 메뉴를 렌더링하려고하면 아무 것도 렌더링되지 않습니다. Zend navigation renderMenu보기에서

내가 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() { } 

그러나이 쓸데없는 코드를 왜 배치해야하는지 궁금합니다. this 주제에 따르면, 이미 다음 줄을 사용하여, 내 application.ini에서보기 리소스를 부트 스트랩 :

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

사전에 감사!

답변

0

당신은 부트 스트랩 빈 initView()와 같은 효과 INI에서 resources.view을 제거 할 수 있습니다 :보기 내가 무슨 일이 일어나고 있는지 짐작 생각

을 부트 스트랩되지 않습니다. 내비게이션을 어디서 구성합니까?

upd : 왜 그런 이상한 방법으로 뷰 인스턴스를 얻습니까?

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

는 config (설정) 할

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을 = 사실"당신은 아래 Zend_Registry에 등록하려면 'Zend_Navigation' "키 또는 resources.navigation [] =는 "

,174을 configuraton보기 뷰 헬퍼

뷰 헬퍼 경로/프리픽스 설치 이동 저장할

+0

정확한 반대 : 부트 스트랩에서 initView 메소드를 제거하고 application.ini의 resources.view 만 유지하십시오. 불행히도, 이것은 작동하지 않으며 이유를 알고 싶습니다. 내 첫 번째 게시물에 부트 스트랩 코드가 추가되었습니다. – Martijn

+0

페이지 구성을 application.ini로 이동하고 _initNavigation 메소드를 제거 할 수 있습니다. – Xerkus