Yii2 Nav小部件:活动项目

时间:2016-05-04 11:19:23

标签: yii2 nav

我有Nav项目:

[
    'label' => 'All',
    'url' => ['project/index'],
],
[
    'label' => 'Done',
    'url' => ['project/index', 'assigned' => 'done'],
],

但是当我去project / index& assigned = done时,他们都有一个active类。只有当项目的url严格等于$route值时,我才能强制附加此课程?

2 个答案:

答案 0 :(得分:1)

Nav小部件的路由和参数匹配$route时(如果未设置,它将使用当前请求的路由)和$params(如果未设置),它将使项目处于活动状态,它将使用$ _GET)。

如果路线为project/index(请查看here),您的第一项将始终有效。

你应该试试这个例子:

[
    'label' => 'All',
    'url' => ['project/index', 'assigned' => 'not-done'],
],
[
    'label' => 'Done',
    'url' => ['project/index', 'assigned' => 'done'],
],

详细了解how Nav widget set an item active or not

答案 1 :(得分:0)

$actionId = $this->context->action->id; // the id of the actual action

$items = [
    ['label' => 'All', 'active' => $actionId === 'index',
        'url' => ['/project/index'],
    ['label' => 'Done', 'active' => $actionId === 'index' 
         && \Yii::$app->request->get('assigned') === 'done',  
        'url' => ['/project/index', 'assigned' => 'done']]
];