2013-07-29 4 views
2

У меня есть Zend Навигационная объект Acl и Роли:Zend Navigation, ACL и Partials

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-> Контейнер со все страницами (через ACL выставиться в unaviable)

Может быть, я должен пройти ACL и т.д. частичные

foreach ($this->container as $page) 
    echo $this->navigation()->menu()->setAcl($this->acl)->setRole(($this->user ? 'user' : 'guest'))->htmlify($page); // ????????????????????? 

, но как Добейся этого?

Есть ли что-то, что я должен делать/знать?

ответ

9
foreach ($this->container as $page){ 
    if($this->navigation()->accept($page)) 
     echo $this->navigation()->menu()->htmlify($page); 
} 

Почему? В пользовательском представлении вам нужно запустить проверку самостоятельно.

+0

Ничего себе. Благодарю. Я потратил много времени на документацию, и я ничего не мог найти. –

+1

Будет ли правильный ответ, я не смог заставить его работать правильно. После некоторого рытья и размышления я использовал Navigation :: setDefaultAcl & Navigation :: setDefaultRole, чтобы заставить его работать. Надеюсь, это может помочь кому-то в будущем. – MKroeders

+0

Я тоже использовал методы setDefault @Hendriq, но все же мне пришлось вручную проверять acl, как писал Aleksander. – webDEVILopers