Zend_Navigation隐藏页面(Zend_Navigation with hidden pa

2019-10-24 04:58发布

我从一个PHP数组装载我Zend_Navigation(不过这无关紧要......),我使用的导航菜单帮助生成基于所加载的导航菜单。 某些菜单项目不能出现在输出的菜单,所以我只需设置“‘看得见’=>假”在我的数组该网页,你去那里! 但是,如果一个“隐藏”菜单的URL被访问时,findActive($容器)视图助手方法返回一个空数组,因此不会返回从容器的页面,即使应(例如,如果该页面不存在, ); 离开浏览器标题空,等等。

由于两个菜单导航帮助和导航视图助手使用“可见”选项丢弃页面(通过该方法接受($页)),该设置是在我的情况也没用。

什么是从这里去的最佳途径?

Answer 1:

我其实只是找到了一个更好的解决方案。 只需将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,以确保它不会导致在未来的问题。



Answer 2:

还有,一些修修补补之后,我最终选择了这个选项:

  1. 我有,我不希望在我的菜单显示的页面多了一种选择:“菜单项”。 (此选项不是强制性的,并且可以是零/解除警戒)
  2. 在我的布局的剧本,我递归遍历通过所有的页面,并设置$page->visible = false; 在所有页面false === $page->menuItem为真
  3. 我所说的菜单导航帮助

由于在菜单导航助手被称为视图脚本已经被调用后才能(headTitle设置),而该支票是在我的布局做了,那么我可以放心地设置任何页面的可见属性设置为false没有负面的缺点。



文章来源: Zend_Navigation with hidden pages