2016-10-04 1 views
1

Quand je veux supprimer un élément sur GridView Je reçois cette erreur:yii2 Lorsque suppression GridView: Impossible de vérifier votre soumission de données

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

Mon ce mon code de contrôleur:

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']); 
} 

Et quand Je change la méthode post à la méthode get en fonction des comportements que je reçois cette erreur

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

code 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'], 
       ], 
]); ?> 

aucune idée s'il vous plaît !!

+0

Le paramètre CSRF est-il présent dans votre vue? – Bizley

+0

Je ne pense pas, je ne peux pas voir ce paramètre –

+0

maintenant je reçois cette erreur 'Méthode non autorisée. Cette url ne peut gérer que les méthodes de requête suivantes: POST.' –

Répondre

2

Ajoutez une balise meta CSRF dans votre fichier de mise en page personnalisé.

Exemple:

<?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() ?> 

Here you can read more about CSRF.

+0

cela fonctionne, merci –

+0

Puissante réponse, a cherché tant d'endroits. – Bira