2016-03-28 2 views
1

Yii2 delete bestätigen Dialog funktioniert nicht über Menü-Widget-Element.Yii2-Methode nicht zulässig. Diese URL kann nur die folgenden Anfrage-Methoden behandeln: POST

[ 
    'label' => '<i class="fa fa-trash-o alis"></i> Sil', 
    'url' => ['site/delete', 'id' => $model->id], 
    'linkOptions' => [ 
     'data-confirm' => 'Are you sure you want to delete this item?', 
     'data-method' => 'post', 
    ], 
    'visible' => 'visible' 
], 

Und ich sehe diesen Fehler:

Method Not Allowed (#405) Method Not Allowed. This url can only handle the following request methods: POST.

Wie kann ich bestätigen Dialog verwenden löschen. Dann versuche ich dies aber nicht funktioniert ...

[ 
    'label' => '<i class="fa fa-trash-o alis"></i> delete', 
    'url' => ['site/delete','id' => $model->id], 
    [ 
     'data' =>[ 
      'data-confirm' => 'Are you sure you want to delete this item?', 
      'data-method' => 'post', 
     ], 
    ], 
    'visible' => 'visible' 
], 

Antwort

1

I Problem über Template-Optionen wie folgenden Code-Block festgelegt:

['label' => '<i class="fa fa-trash-o alis"></i> delete', 
    'url' => ['site/delete','id' => $model->id], 
    'template' => '<a href="{url}" data-confirm = "Are you sure you want to delete this item?", data-method="post">{label}</a>', 
    'visible' => 'visible' 
], 
0

in Ansichtsdatei

['label' => '<i class="fa fa-trash-o alis"></i> delete', 
    'url' => ['site/delete','id' => $model->id], 
    'template' => '<a href="{url}" data-confirm = "Are you sure you want to delete this item?", data-method="post">{label}</a>', 
    'visible' => 'visible' 

],

und auch in AppAsset-Datei müssen wir Active hängt Array wie folgt:

public $depends = [ 
     'yii\web\YiiAsset', 
     'yii\bootstrap\BootstrapAsset', 
]; 
0

Sie senden und GET. Aber in der Steuerung standardmäßig zum Löschen - nur POST POST oder bearbeiten Regeln in contoller senden, wie folgt aus:

public function behaviors() 
{ 
    return [ 
     'verbs' => [ 
      'class' => VerbFilter::className(), 
      'actions' => [ 
       'delete' => ['post'], //delete this string to may GET 
      ], 
     ], 
    ]; 
} 
0

ich denke, die Ursache des Fehlers ist die HTTP-Methode, wenn Sie Link Unterschied mit Methode klicken Sie Config für die Aktion in Funktionsverhalten() des Controllers. Sie müssen also die Methode für den Link definiert haben (mein Englisch ist leider nicht gut). Ich habe versucht und es hat funktioniert:

Html::a('', $url, 
    [ 
    'data' => [ 
     'method' => 'post', 
      // use it if you want to confirm the action 
      'confirm' => 'Are you sure?', 
     ], 
     'class' => 'glyphicon glyphicon-trash btn btn-default btn-xs custom_button' 
    ] 
); 
Verwandte Themen