yii2 При удалении GridView: невозможно проверить отправку данных

Когда я хочу удалить элемент в GridView, я получаю эту ошибку:

exception 'yii\web\BadRequestHttpException' with message 'Unable to verify your data submission.

Мой код моего контроллера:

class DevisController extends Controller
{
 public $layout = 'lay-admin';

 public function behaviors()
 {
    return [
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
    ];
}
/* ..... */
public function actionDelete($id)
{
    $this->findModel($id)->delete();

    return $this->redirect(['index']);
}

И когда я меняю метод post на метод get в функции поведения, я получаю эту ошибку

Method Not Allowed. This url can only handle the following request methods: GET.

Код GridView:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
                'columns' => [
                    ['class' => 'yii\grid\SerialColumn'],

                    //'idDevis',
                    'reference',
                    'client',
                    'dateCreation',
                    'contact',
                    'valableJusqua',
                    'dateRelance',
                    [
                     'attribute'=>'etat',
                     'filter'=>ArrayHelper::map(Devis::find()->asArray()->all(), 'etat', 'etat'),
                    ],
                    'commercial',
                    'modePaiement',
                    'delaiPaiement',

                    ['class' => 'yii\grid\ActionColumn'],
                ],
]); ?>

любая идея, пожалуйста!


person Malki Mohamed    schedule 04.10.2016    source источник
comment
Параметр CSRF присутствует в вашем представлении?   -  person Bizley    schedule 04.10.2016
comment
я не думаю, я не вижу этот параметр   -  person Malki Mohamed    schedule 04.10.2016
comment
теперь я получаю эту ошибку Method Not Allowed. This url can only handle the following request methods: POST.   -  person Malki Mohamed    schedule 04.10.2016
comment
Вставьте код вашего gridview, о котором идет речь.   -  person Bizley    schedule 04.10.2016
comment
хорошо, я обновлю свой вопрос   -  person Malki Mohamed    schedule 04.10.2016
comment
У вас есть Html::csrfMetaTags() в файле макета lay-admin?   -  person Bizley    schedule 04.10.2016
comment
нет, у меня нет этой функции   -  person Malki Mohamed    schedule 04.10.2016
comment
Возможный дубликат Почему невозможно проверить ваши данные ошибка отправки в Yii2?   -  person Bizley    schedule 04.10.2016


Ответы (1)


Добавьте метатег CSRF в свой собственный файл макета.

Пример:

<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
    <meta charset="<?= Yii::$app->charset ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <?= Html::csrfMetaTags() ?>

    <title><?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>

Здесь вы можете узнать больше о CSRF .

person Bizley    schedule 04.10.2016
comment
Что делать, если у меня есть csrf, но я все еще получаю bad request 400 при удалении? - person Toma Tomov; 19.02.2019