2016-07-04 15 views
1

Ich möchte nur GET-Anfragen an meinen Controller zulassen und habe VerbFilter angehängt. Die Dokumentation besagt, dass sie den HTTP-Statuscode 405 zurückgeben muss, wenn die Methode der Anfrage nicht erlaubt ist, aber ich habe stattdessen 500 Statuscode erhalten.Yii2 VerbFilter gibt 500 Statuscode statt 405 zurück

class MyController extends Controller { 

    ... 

    public function behaviors(){ 
    return [ 
     'verb' => [ 
     'class' => VerbFilter::className(), 
     'actions' => [ '*' => ['get'] ] 
    ]; 
    } 

    public function actions(){ 
     return [ 'error' => [ 
     'class' => 'yii\web\ErrorAction' 
     ]]; 
    } 

    ... 

    } 

Fehlermeldung

An Error occurred while handling another error: 
exception 'yii\web\MethodNotAllowedHttpException' with message 
'Method Not Allowed. This url can only handle the following request methods: GET.' 
in /yii_project/vendor/yiisoft/yii2/filters/VerbFilter.php:105 

Previous exception: 
exception 'yii\web\MethodNotAllowedHttpException' with message 
'Method Not Allowed. This url can only handle the following request methods: GET.' 
in /yii_project/vendor/yiisoft/yii2/filters/VerbFilter.php:105 

Wie Sie sehen können, ist previos Fehler Duplikat aktuellen Fehler. Ich habe keine Ahnung von einem Grund dafür.

+0

500 ist Serverfehler, also würde ich vermuten, dass Sie einen Fehler haben. Funktionieren Anfragen mit GET erfolgreich? –

+0

@ Jørgen Ja, GET arbeiten erfolgreich. Fehlermeldung informiert über Fehler während der Behandlung eines anderen Fehlers. Also, VerbFilter gibt zwei Fehler. Ich habe VerbFilter zweimal angefügt. Aber ich nicht. Wtf ... :( –

+0

Protokoll für 500 Fehler zur Verfügung stellen –

Antwort

1

erster Fehler: "Previous Error" - ist 405 mit Umleitung auf Fehlerbehandlung. zweite Fehler:. Ihre Aktion Fehler will ‚GET‘ Anfrage auch aber sieht aus wie bekam gleiche Art von Anfrage => Endlosschleife

Aktion für Ihre Verb Filter angeben und Sie erhalten 405 Fehler

public function behaviors(){ 
    return [ 
     'verb' => [ 
     'class' => VerbFilter::className(), 
     'actions' => [ 'action-name' => ['get'] ] 
    ]; 
    } 
+0

Ja, es funktioniert.Ich erlaubte alle Methoden für Fehleraktion, und GET für andere Aktionen und es funktioniert. Vielen Dank! –