Yii2 Nav 小部件:活动项目
Posted
技术标签:
【中文标题】Yii2 Nav 小部件:活动项目【英文标题】:Yii2 Nav widget : active item 【发布时间】:2016-08-29 19:24:00 【问题描述】:我有 Nav
的物品:
[
'label' => 'All',
'url' => ['project/index'],
],
[
'label' => 'Done',
'url' => ['project/index', 'assigned' => 'done'],
],
但是当我转到 project/index&assigned=done 时,它们都有一个 active
类。仅当项目的 url
严格等于 $route
值时,我如何才能强制附加此类?
【问题讨论】:
【参考方案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的信息。
【讨论】:
感谢您的链接。它们很有用。【参考方案2】:$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']]
];
【讨论】:
以上是关于Yii2 Nav 小部件:活动项目的主要内容,如果未能解决你的问题,请参考以下文章