Zend framework2 第二次导航未注入ACL

Zend framework2 第二次导航未注入ACL,zend-framework2,zend-navigation,zend-acl,Zend Framework2,Zend Navigation,Zend Acl,我有一个带有管理区的应用程序,它需要一个独立于主站点的导航菜单,我还需要插入ACL以防止管理员用户看到某些菜单项 我已经创建了一个管理导航工厂 namespace Freedom\Zend\Navigation\Service; use Zend\Navigation\Service\DefaultNavigationFactory; class AdminNavigationFactory extends DefaultNavigationFactory { protected f

我有一个带有管理区的应用程序,它需要一个独立于主站点的导航菜单,我还需要插入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。在我的admin 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_导航功能未被调用。在我的应用程序模块的默认导航中,我有几乎相同的代码,该函数被称为ok

有人知道为什么没有调用admin_导航功能吗


非常感谢。

我在斯托扬·切雷沙罗夫的帮助下找到了答案。管理员导航应该是导航