如何使 SideNav 的活动项目成为另一种风格?

How to make active item of SideNav in another style?

我希望 yii2 应用程序中 Kartik 的 SideNav 中的项目在处于活动状态(被单击并打开)时更改颜色。

抱歉,我是 PHP 和 Yii 的新手,这个问题可能很明显,但我真的在这里。

我已经尝试使用文档中说明的 "active" 选项,但它不起作用。它没有显示任何错误,但不工作。我有一个文件 adminMenu.php,其中写有 SideNav。以及我显示它的 panel.php 视图文件。

此外,我尝试添加 echo

$this->render('adminMenu'['currentPage'=>'admin/personal']);

但它显示错误,因此我现在对其进行评论。

adminMenu.php:

class adminMenu extends Widget{
    public function init(){
        $curentpage = Yii::$app->controller->id ;
        parent::init();
        ob_start();


    echo SideNav::widget([
        'type' => SideNav::TYPE_PRIMARY,
        'headingOptions' => ['class'=>'head-style'],
        'items' => [
            ['label' => 'Personal', 
             'url' => ['/admin/personal'], 
             'active' => ($curentpage == 'admin/personal')],

            ['label' => 'Clients', 
             'url' => ['/admin/clients'], 
             'active' => ($curentpage == 'admin/clients')],

           ...
    ]);

panel.php:

if(\Yii::$app->user->can('Admin')){
    echo adminMenu::widget();
    //echo $this->render('adminMenu'['currentPage'=>'admin/personal']);
}

我认为你错在这一行

$curentpage = Yii::$app->controller->id;

Yii::$app->controller->id only return 你的控制器的名称,在这个casi中将是"admin"然后你比较"admin"等于"controller/action" ('admin/personal') 这永远不会等于 .

为此,您可以像这样连接实际控制器和实际操作:

$curentpage = Yii::$app->controller->id.'/'.Yii::$app->controller->action->id;

比较成功,"active"class添加到你的侧边栏