2015-06-12 55 views
0

我有一个管理区域的应用程序,需要从主站点单独导航菜单,我还需要注入ACL以防止管理员用户看到某些菜单项。二次导航不注入ACL

我创建了一个管理导航工厂。

namespace Freedom\Zend\Navigation\Service; 

use Zend\Navigation\Service\DefaultNavigationFactory; 

class AdminNavigationFactory extends DefaultNavigationFactory 
{ 
    protected function getName() 
    { 
      return 'admin_navigation'; 
    } 
} 

并把它添加到服务管理

'service_manager' => array(
     'factories' => array(
      'admin_navigation' => 'Freedom\Zend\Navigation\Service\AdminNavigationFactory' 
     ), 
    ), 

这一切工作正常,我可以看到菜单,问题是,当我尝试注入的ACL。在我的管理module.php我有

public function getViewHelperConfig() 
    { 
     return array(
      'factories' => array(
       'admin_navigation' => function(HelperPluginManager $pluginManager) { 
        $serviceManager = $pluginManager->getServiceLocator(); 

        $acl = new Acl(); 

        $auth = $serviceManager->get('Zend\Authentication\AuthenticationService'); 

        $role = $acl::DEFAULT_ROLE; 

        if ($auth->hasIdentity()) { 
         $user = $auth->getIdentity(); 
         $role = $user->getUserRole()->getRole(); 
        } 

        $navigation = $pluginManager->get('Zend\View\Helper\Navigation'); 

        $navigation->setAcl($acl)->setRole($role); 
        return $navigation; 
       } 
      ) 
     ); 
    } 

但是上面的admin_navigation函数没有被调用。在我的应用程序模块的默认导航中,我有几乎相同的代码,并且函数被调用成功。

有谁知道为什么admin_navigation函数没有被调用?

非常感谢提前。

回答