Свързване на Zend_Acl със Zend_Navigation

Искам навигацията да показва само елементи, разрешени от Acl, но имам проблеми със свързването на навигация с Acl - когато го направя, както е показано в официален пример или някои други ресурси в интернет, моята навигация все още показва всички елементи като без Acl.

В Bootstrap правя:

$view->navigation()->setContainer($container);
$view->navigation()->setAcl($acl)->setRole("1");

Където :

  • $view е Zend_View обект
  • $container е Zend_Navigation обект
  • $acl е Zend_Acl обект

Имам първоначалния навигационен масив, настроен както трябва, acl и навигационните обекти също изглеждат добре и съдържат това, което трябва да съдържат, така че няма да ги публикувам тук.


В момента го накарахме да работи с помощта на конструкции като:

if(!$acl->isAllowed(/* auth data, controller, action */)) {
    unset(/* this page from pages array */);
}

но това изобщо не е красиво и не е като едноредов в официалния пример.


Въпросът ми е какъв най-вероятно е проблемът ми тук и какви са най-често срещаните проблеми и грешки, които разработчиците правят, докато комбинират Zend_Navigation със Zend_Acl?

Може би мога да намеря решение сред тях и това може да помогне на други разработчици, които имат проблеми с този проблем.


person bogatyrjov    schedule 19.10.2012    source източник
comment
Допълнителен въпрос е за setRole(1) - в момента му предавам идентификатора на ролята, тъй като масивите на ролите съдържат само идентификатори. Това правилно ли е използването на setRole()?   -  person bogatyrjov    schedule 19.10.2012


Отговори (1)


Имам едно предложение. Защо не можете да напишете помощник за изглед за това (с модул, контролер, действие като параметри)? И в този помощник за изглед можете да проверите достъпа.

Така че вместо просто да пренасочвате, можете да използвате viewhelper, за да проверите достъпа и да препратите към действието.

Това ли търсите?

person harry    schedule 20.10.2012