Я на самом деле только что нашел гораздо более элегантное решение. Просто добавьте следующую строку перед вызовом findActive (), и он вернет невидимую страницу, если она выбрана:
$this->navigation()->setRenderInvisible(true);
Например, следующий код:
Zend_Debug::dump($this->navigation()
->findActive($this->navigation()->getContainer()));
$this->navigation()->setRenderInvisible(true);
Zend_Debug::dump($this->navigation()
->findActive($this->navigation()->getContainer()));
Производит:
array(0) {
}
array(2) {
["page"] => object(Zend_Navigation_Page_Mvc)#33 (24) {
... PAGE INFORMATION ...
}
["depth"] => int(0)
}
Любопытно, что это не влияет на отображение меню - то есть скрытые страницы все еще скрыты. Это не имеет особого смысла, поэтому я бы рекомендовал снова установить значение false, чтобы убедиться, что это не вызовет проблем в будущем.