我正在使用Zend導航與ACL。我的用戶可以有多個角色,但彼此之間沒有任何關係,但Zend導航只接受一個角色,並檢查具有該角色的ACL,這對我不利。ZF2註冊導航定製助手
如何註冊導航的新助手,以便我可以覆蓋acceptAcl
方法。我試圖創建並註冊一個簡單的視圖助手但沒有奏效
class Menu extends \Zend\View\Helper\Navigation\Menu implements \Zend\ServiceManager\ServiceLocatorAwareInterface
{
protected function acceptAcl(AbstractPage $page)
{
if (!$acl = $this->getAcl()) {
// no acl registered means don't use acl
return true;
}
$userIdentity = $this->getServiceLocator()->get('user_identity');
$resource = $page->getResource();
$privilege = $page->getPrivilege();
$allowed = true;
if ($userIdentity->id !== "1") {
if ($acl->hasResource($resource)) {
$allowed = false;
foreach ($userIdentity->rolls as $roll) {
if ($acl->isAllowed($roll['id'], $resource)) {
$allowed = true;
continue;
}
}
}
}
return $allowed;
}
public function renderMenu($container = null, array $options = array())
{
return 'this is my menu';
}
}
'view_helpers' => array(
'invokables' => array(
'myMenu' => 'Application\View\Helper\Menu',
),
),
如何註冊這個幫手,使導航知道嗎?
你應該添加用戶的ACL與父母一起的角色,然後交給這個角色ID導航幫手。不需要定製助手。 – Crisp 2013-03-03 11:03:26