Yii2:菜单在不同的控制器中有效

Gie*_*est 0 yii2

这是我的代码:

<?=
     Nav::widget([
          'options' => ['class' =>'nav-pills nav-stacked'],
          'encodeLabels' => false,
          'items' => [
                   [
                    'label' => 'Blog',
                    'url' => ['/blog'],
                    'active' => \Yii::$app->controller->id == 'blog'
                   ],
          ],
     ]);
?>
Run Code Online (Sandbox Code Playgroud)

但我希望这个菜单不仅在控制器是"博客"时有效,而且在"类别"和"发布"时也是如此.

Ali*_*our 6

更改您的代码如下:

Nav::widget([
      'options' => ['class' =>'nav-pills nav-stacked'],
      'encodeLabels' => false,
      'items' => [
               [
                'label' => 'Blog',
                'url' => ['/blog'],
                'active' => in_array(\Yii::$app->controller->id,['blog','category','post'])
               ],
      ],
 ]);
Run Code Online (Sandbox Code Playgroud)

通过上面的代码,如果控制器ID是['blog','category','post']值之一,则您的菜单项将被视为活动.唯一的变化是:

 'active' => in_array(\Yii::$app->controller->id,['blog','category','post'])
Run Code Online (Sandbox Code Playgroud)