Yii2 Kartik-V SideNav小部件传递url方法

时间:2015-05-06 07:27:18

标签: url navigation widget yii2

我们如何在kartik v sidenav小部件中传递url方法

      echo SideNav::widget([ 
           'type' => $type, 'encodeLabels' => false,
           'heading' => $heading,
           'items' => [
                 Yii::$app->user->isGuest ?
                            ['label' => 'LOGIN',  'url' => '', 'active' => ($item == 'login')] :
                            ['label' => 'LOGOUT', 'url' => 'site/logout', 'linkOptions' =>  ['data-method' => 'post']],

                    ],
                ]);

我收到错误,因为logout需要方法发布 我们在哪里传递此小部件中的数据方法

2 个答案:

答案 0 :(得分:0)

我也使用kartk v sidenav小部件,这是我的SiteController

class SiteController extends Controller
{
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'access' => [
                .......
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }


    public function actionLogout()
    {
        Yii::$app->user->logout();

        return $this->goHome();
    }
}

在sidenav我只是有这个

['label' => 'logout',  'url'=>Url::to(['/site/logout'])],

答案 1 :(得分:0)

我遇到了同样的问题,并使用template option作为SideNav小部件。我受this SO回答的启发。

您的代码如下所示:

echo SideNav::widget([ 
       'type' => $type, 'encodeLabels' => false,
       'heading' => $heading,
       'items' => [
             Yii::$app->user->isGuest ?
                        ['label' => 'LOGIN',  'url' => '', 'active' => ($item == 'login')] :
                        ['label' => 'LOGOUT', 'icon' => 'log-out', 'url'=>Url::to(['/site/logout']), 'template' => '<a href="{url}" data-method="post">{icon}{label}</a>' ]
                ],
            ]);

我添加了一个图标作为一个额外的例子。