0

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

抱歉,我对 PHP 和 Yii 很陌生,问题可能很明显,但我真的在这里堆叠。

我已经尝试使用文档中解释的“活动”选项,但它不起作用。它没有显示任何错误但无法正常工作。我有一个文件adminMenu.php,其中写入了 SideNav。以及我展示它的panel.php视图文件。

另外,我尝试添加回声

$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')],

           ...
    ]);

面板.php:

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

1 回答 1

0

我认为你的错误是在这一行

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

Yii::$app->controller->id 只返回你的控制器的名称,在这种情况下将是“admin”然后你比较“admin”等于“controller/action”('admin/personal')这永远不会等于 。

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

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

并且比较将成功,并且“活动”类添加到您的侧边栏

于 2019-07-05T10:47:46.590 回答