第二次导航不注入 ACL
Second navigation not injecting 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 函数没有被调用?
非常感谢。
我在 Stoyan Cheresharov 的帮助下弄明白了,https://www.youtube.com/watch?v=6U_lERLu4Ys。 admin_navigation 应该只是导航。
我有一个带有管理区域的应用程序,它需要一个独立于主站点的导航菜单,我还需要注入 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 函数没有被调用?
非常感谢。
我在 Stoyan Cheresharov 的帮助下弄明白了,https://www.youtube.com/watch?v=6U_lERLu4Ys。 admin_navigation 应该只是导航。