2015-08-11 4 views
5

Ich versuche (Statuscode) als Reaktion von REST-api zu bekommen, während sie nur Feldnamen und Fehlermeldung zurück, wie dieseYii2 Rest api kehrt nicht Antwortcode und Status

[{"field":"Email","message":"Email \"[email protected]\" has already been taken."}] 

ich hinzugefügt habe Antwort

'response' => [ 
     'class' => 'yii\web\Response', 
     'on beforeSend' => function ($event) { 
      $response = $event->sender; 
      if ($response->data !== null && Yii::$app->request->get('suppress_response_code')) { 
       $response->data = [ 
        'success' => $response->isSuccessful, 
        'data' => $response->data, 
       ]; 
       $response->statusCode = 200; 
      } 
     }, 

    ], 
+0

so setzen Sie nur den Statuscode, wenn 'suppress_response_code' über' $ _GET' gesendet wird? – Blizz

+0

Aber ich bekomme in keinem Fall eine Statusantwort .... – naCheex

+2

@AliRaza versuche den zweiten Teil 'Yii :: $ app-> request-> get ('suppress_response_code') zu entfernen und teste es. Wenn es fehlschlägt, ist '$ response-> data' null. – SiZE

Antwort

0
Yii::$app->response->statusCode 

Sie können diesen Code in Sie Aktion hinzufügen, bevor Rückkehr Ihre Antwort

5

dass wa Versuchen y, es funktioniert für mich:

if ("some error checking goes there") { 
    Yii::$app->response->statusCode = 422;//I preferred that error code 
    return [ 
     "data" => [ 
      'errors' => [ 
       'fieldname' => "Field Name is invalid", 
      ] 
     ], 
    ]; 
}