我有带 Acl 和角色的 Zend Navigation 对象:
echo $this->navigation()->menu('navigation')
->setAcl($this->acl)
->setRole(($this->user ? 'user' : 'guest'))
->render();
及其完美的工作(隐藏了一些页面)
但是
当我使用自定义部分时:
echo $this->navigation()->menu('navigation')
->setAcl($this->acl)
->setRole(($this->user ? 'user' : 'guest'))
->setPartial('partial/twitterBootstrapNavHeadUl.phtml')
->render();
和这部分内容
foreach ($this->container as $page)
echo $this->navigation()->menu()->htmlify($page);
它传递给部分 $this->container with ALL pages(通过 acl 设置为不可用)
也许我应该将 acl 等传递给 partial
foreach ($this->container as $page)
echo $this->navigation()->menu()->setAcl($this->acl)->setRole(($this->user ? 'user' : 'guest'))->htmlify($page); // ?????????????????????
但是如何实现呢?
有什么我应该做/知道的吗?
最佳答案
foreach ($this->container as $page){
if($this->navigation()->accept($page))
echo $this->navigation()->menu()->htmlify($page);
}
为什么?在自定义 View 中,您必须自己运行检查。
关于zend-framework2 - Zend Navigation、ACL 和 Partials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918463/