2010-04-02 1 views
1

저는 주말 내내 Zend_Navigation에 어려움을 겪었습니다. 이제는 내 문제가 많이 발생했다고 생각되는 또 다른 문제가 있습니다.이전 레거시 부트 스트랩이있는 뷰에 Zend_Navigation 추가

Zend_Navigation을 기존 1.7.6 Zend Framework 응용 프로그램에 추가하려고하는데 Zend Library를 1.9.0으로 업데이트하고이 라이브러리를 업데이트 할 수 있도록 부트 스트랩을 업데이트했습니다.

문제는 내가 아는 방법과 예제가보기로 탐색 객체를 추가하는 방법의 새로운 부트 스트랩 방법을 보여주지 않는다는 것입니다, 나는이 시도했다 :

//initialise the application layouts with the MVC helpers 
$layout = Zend_Layout::startMvc(array('layoutPath' => '../application/layouts')); 

$view = $layout->getView(); 
$configNav = new Zend_Config_Xml('../application/config/navigation.xml', 'navigation'); 
$navigation = new Zend_Navigation($configNav); 
$view->navigation($navigation); 
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer(); 
$viewRenderer->setView($view); 

이는 것 같다 괜찮아요,하지만 내 레이아웃에서 빵 부스러기 뷰 도우미를 사용하려고하면 오류가 발생합니다 : 엄격한 표준 : C : \ www \ moobia \ development \ website \ application \ modules \ employers \ controllers \ IndexController.php on line 27

이것은 init()의 다음 코드로 인해 발생합니다) 기능.

$uri = $this->_request->getPathInfo(); 
$activeNav = $this->view->navigation()->findByUri($uri); <- this is null when called 
$activeNav->active = true; 

저는 Zend_Navigation 개체가보기에 없기 때문입니다.

현재 부트 스트랩을 현재 방법으로 마이그레이션하는 방법을 살펴 보 겠지만 현재 릴리스가 만료되었습니다.

감사합니다,

그랜트

답변

2

먼저 당신이 Zend_Navigation이보기에없는 것을 당신의 의혹 있는지 여부를 작동하여 정확해야합니다. 이 작업을 수행하는 가장 쉬운 방법은 컨트롤러에 init()을 추가하는 것입니다 :

var_dump($this->view->navigation());exit; 

. Zend_Navigation 객체가 있으면 반환해야합니다.

거기에 없다면 Zend_Navigation 객체를 제공하는 또 다른 방법은 레지스트리를 사용하는 것이 더 쉬울 수도 있습니다. 이렇게하려면 당신은 당신의 부트 스트랩에서보기 물건을 제거하고 그냥 할 거라고 : 이미하지 않는 경우 물건이 레지스트리에 모양 뷰 개체로 동일하게 유지 될 것이다()

$configNav = new Zend_Config_Xml('../application/config/navigation.xml', 'navigation'); 
$navigation = new Zend_Navigation($configNav); 
Zend_Registry::set('Zend_Navigation', $navigation); 

컨트롤러 초기화를 Zend Navigation 객체가 있습니다.

그러나 컨트롤러 init() 코드가 원하는대로 작동하는지 확신 할 수 없습니다. 나는 findByUri()가 Mvc 페이지에서 작동 할 것이라고 생각하지 않습니다. (틀렸을 수도 있습니다), 이전 질문에서 XML 파일의 대부분 페이지가 Mvc 페이지 인 것처럼 보였습니다. Mvc 클래스에는 동일한 것으로 보이는 'href'속성이 있습니다. XML 파일이 두 페이지 유형이 포함되어있는 경우, 당신은 모두를 확인해야 할 수도 있습니다, 그래서 나는이 같은 것을 건의 할 것입니다 : 당신이 별입니다

$uri = $this->_request->getPathInfo(); 
if (($activeNav = $this->view->navigation()->findByHref($uri)) !== null) { 
    $activeNav->active = true; 
} else if (($activeNav = $this->view->navigation()->findByUri($uri)) !== null) { 
    $activeNav->active = true; 
} 
+0

@ 팀 분수, 선생님! 하루에 두 번! 감사합니다. 나는이 사이트와 커피 양동이로드가 아니라면 지금까지 신경 쇠약을 일으킬 것이라고 확신한다! 다시 한번 많은 감사합니다! –