我们如何在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需要方法发布 我们在哪里传递此小部件中的数据方法
答案 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>' ]
],
]);
我添加了一个图标作为一个额外的例子。