2009-12-16 2 views
1

우리가 가진 것을의가 있다고 가정 해 봅시다 :Zend_Navigation : 컨트롤러의 모든 동작에 활성 상태를 적용하는 방법?

$pages = array(
    array(
     'controller' => 'controller1', 
     'label'  => 'Label1', 
    ), 
    array (
     'controller' => 'controller2', 
     'label'  => 'Label2' 
    ), 
); 
$container = new Zend_Navigation($pages); 

사용자가 Label1을, controller1/index 액션이 렌더링 클릭하고 Label1을 활성 상태가 - 다 괜찮습니다. 이 페이지에는 다음과 같은 많은 링크가 있습니다. controller1/action1, controller1/action2 등 이러한 링크 중 하나를 클릭하면 Label1의 활성 상태가 해제됩니다. 내가 선호 것,

은 내가 Zend_Navigation에 모든 하위 페이지를 추가 할 수 있음을 이해하지만,이 페이지의 많음이있다 나는 탐색 어디서든 필요가 없습니다, 그래서 뭔가 같은 :

public function init() 
{ 
    $this->view->navigation()-> ... get item by label ... -> setActive(); 
} 

내부 컨트롤러 1. 가능한가?

답변

4

초기화 방법이 매우 비슷합니다! 당신이 초기화하기 위해서 필요 물론

// apply active state to all actions of controller 
$controller = Zend_Controller_Front::getInstance()->getRequest()->getControllerName(); 
$page = $this->navigation()->findOneByController($controller); /* @var $page Zend_Navigation_Page */ 
if ($page) { 
    $page->setActive(); 
} 
echo $this->navigation()->menu(); 

: 당신이 당신의 메뉴를 인쇄 할 경우 는 단순히 menu.phtml 또는로 .phtml에이를 붙여 넣습니다

$page = $this->view->navigation()->findOneByLabel('Your Label'); /* @var $page Zend_Navigation_Page */ 
if ($page) { 
    $page->setActive(); 
} 
2

나는 이것이 그가 찾고있는 정확하게 생각 먼저 Zend_Navigation_Page_Mvc 페이지가있는 탐색 구조. 어떻게 든이 URL 페이지와 함께 나를 위해 작동하지 않습니다 ...

관련 문제