如何确定请求在视图(/模板)中路由到哪个导航中?
我有两个导航: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证明检查/显示布局中的正确导航