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

时间:2014-12-01 16:50:17

标签: php navigation zend-framework2

如何确定请求在View(/ Template)中路由到哪个导航?

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

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

这里是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',
        ),
    ),
),

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

1 个答案:

答案 0 :(得分:0)

我现在提出了以下解决方案:

每个控制器都从Guest / User或Admin控制器

进行扩展

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

protected $_sNavigationKey = 'guest';

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

现在我可以通过 $ sNavigationKey

的证明来检查/显示布局中的正确导航