Zend framework2 Zend导航、ACL和部分

Zend framework2 Zend导航、ACL和部分,zend-framework2,zend-navigation,Zend Framework2,Zend Navigation,我拥有具有Acl和角色的Zend导航对象: echo $this->navigation()->menu('navigation') ->setAcl($this->acl) ->setRole(($this->user ? 'user' : 'guest')) ->render(); 它的工作非常完美(隐藏了一些页面) 但是 当我使用自定义部分时: echo $this->navigation()->menu('navigation')

我拥有具有Acl和角色的Zend导航对象:

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(通过设置为不可用的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);
}

为什么??在自定义视图中,您必须自己运行检查。

Wow。谢谢我花了很多时间在文档上,但我在任何地方都找不到。答案是正确的吗?我无法让它正常工作。经过一些挖掘和思考,我使用Navigation::setDefaultAcl&Navigation::setDefaultRole使其工作。希望这能对将来的人有所帮助。我也在@Hendriq使用了setDefault方法,但我还是不得不像Aleksander发布的那样手动检查acl。没错,你需要同时使用这两种方法。Ie检查Aleksander和设置默认方法HERE是基于#zf2手册示例的问题简短总结: