我从一个PHP数组装载我Zend_Navigation(不过这无关紧要......),我使用的导航菜单帮助生成基于所加载的导航菜单。 某些菜单项目不能出现在输出的菜单,所以我只需设置“‘看得见’=>假”在我的数组该网页,你去那里! 但是,如果一个“隐藏”菜单的URL被访问时,findActive($容器)视图助手方法返回一个空数组,因此不会返回从容器的页面,即使应(例如,如果该页面不存在, ); 离开浏览器标题空,等等。
由于两个菜单导航帮助和导航视图助手使用“可见”选项丢弃页面(通过该方法接受($页)),该设置是在我的情况也没用。
什么是从这里去的最佳途径?
我其实只是找到了一个更好的解决方案。 只需将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,以确保它不会导致在未来的问题。
还有,一些修修补补之后,我最终选择了这个选项:
- 我有,我不希望在我的菜单显示的页面多了一种选择:“菜单项”。 (此选项不是强制性的,并且可以是零/解除警戒)
- 在我的布局的剧本,我递归遍历通过所有的页面,并设置
$page->visible = false;
在所有页面false === $page->menuItem
为真 - 我所说的菜单导航帮助
由于在菜单导航助手被称为视图脚本已经被调用后才能(headTitle设置),而该支票是在我的布局做了,那么我可以放心地设置任何页面的可见属性设置为false没有负面的缺点。