2016-07-15 8 views
2

ich versuchen, einige API zu erstellen und benutzerdefinierte Validierung hinzu:Laravel Validierung Fehlerreaktion JSON mit

Controller:

use App\Http\Requests\Penggunarequest; 

class LogRegAPI extends Controller { 


    public function register(Penggunarequest $penggunarequest) { 
     $input = $penggunarequest->all(); 
     $nama = $input['name']; 
     $alamat = $input['address']; 
     //other logical thing 

Validierung Anfrage:

namespace App\Http\Requests; 

use App\Http\Requests\Request; 

class Penggunarequest extends Request 
{ 
    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 
     return [ 
      'name' => 'required|String', 
      'address' => 'required|String',     
     ]; 
    } 
} 

Wenn ich Post-Daten über den Controller senden mit Browser, wird es umleiten, um Post zu bilden, wenn Fehler Antwort haben, aber ich möchte es über Android, eThing Arbeit gut gut, außer wenn es Fehler Antwort haben es Anzeige 302. Wie man Fehler machen bzw. Onse Show in benutzerdefinierten JSON?

Antwort

2

Ich habe gerade die Antwort gefunden, ich muss nur die Anfrageklasse überschreiben. Durch die Zugabe von unten Code auf meiner Form Anforderungsvalidierung

public function wantsJson() 
    { 
     return true; 
    } 
0

https://laracasts.com/series/digging-in/episodes/8 ist ein gutes Beispiel. Sie können die Validierungsregeln im Modell setzen, und dann auf dem Controller etwas wie folgt aus:

  $this->model->setRawAttributes($request->all()); 

      if (!$this->model->save()) { 
       return $this->response($this->model->getErrors(), 409); 
      } 

      return $this->model; 

Sie dann eine Middleware-Controller machen könnte, und prüfen, ob es sich um eine JSON-Header Antwort ist, und JSON konvertieren auf die Fliege dafür. Auf diese Weise wird die Validierung mit den Daten verknüpft, und der Controller muss sich nicht um JSON kümmern.