Zend 2 确定视图中的路由/使用的导航


Zend 2 determinate routed / used Navigation in View

如何确定请求在视图(/模板)中路由到哪个导航中?

我有两个导航:1 - 用户导航2 - 管理员导航

如果用户以管理员身份登录系统,则两个导航栏都应该可以访问(通过 triggerdiv 切换)因此,如果管理员触发用户导航上的链接,我想在新请求后显示用户导航 - 如果他触发管理员链接,我想显示管理员导航栏。

这里是来自 module.config.php 的导航数组:

'navigation' => array(
    'default' => array(
        array(
            'label' => 'Home',
            'route' => 'user',
            'resource' => 'navigation',
            'privilege' => 'home',
        ),
        array(
            'label' => 'Login',
            'route' => 'auth',
            'resource' => 'navigation',
            'privilege' => 'auth',
        ),
        array(
            'label' => 'Logout',
            'route' => 'logout',
            'resource' => 'navigation',
            'privilege' => 'logout',
        ),
    ),
    'admin' => array(
        array(
            'label' => 'Home',
            'route' => 'admin',
            'resource' => 'navigation',
            'privilege' => 'home',
        ),
        array(
            'label' => 'Users',
            'route' => 'users',
            'resource' => 'navigation',
            'privilege' => 'users',
        ),
        array(
            'label' => 'Logout',
            'route' => 'logout',
            'resource' => 'navigation',
            'privilege' => 'logout',
        ),
    ),
),

如果可能的话,我想知道并证明导航阵列中的导航键。我不知道我如何访问它们,直到现在我都没有找到一些帮助链接。

我现在

想出了以下解决方案:

每个控制器都从访客/用户或管理员控制器扩展

在扩展控制器的结构中,我设置了导航键":

protected $_sNavigationKey = 'guest';
public function __construct()
{
    $this->getEventManager()->attach('dispatch', function ($e)
    {
        $this->layout()->setVariable('sNavigationKey', $this->_sNavigationKey);
    });
}

现在我可以通过$sNavigationKey证明检查/显示布局中的正确导航