2015-08-11 11 views
5

Sto cercando di ottenere (StatusCode) in risposta delle API REST, mentre il suo ritorno giusto nome del campo e il messaggio di errore come questoYii2 API REST non restituisce codice di risposta e lo stato

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

Ho aggiunto risposta

'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

in modo da impostare solo la statuscode se 'suppress_response_code' viene inviato tramite' $ _GET'? – Blizz

+0

Ma in ogni caso non ricevo risposta di stato .... – naCheex

+2

@AliRaza prova a rimuovere la seconda parte 'Yii :: $ app-> request-> get ('suppress_response_code')' e testalo. Se fallisce allora '$ response-> data' è nullo. – SiZE

risposta

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

è possibile aggiungere in te l'azione di questo codice, prima di restituire la tua risposta

5

Prova che wa y, funziona per me:

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