2016-09-11 2 views
0

Ich versuche Validierung in meinem api wie folgt umzusetzen:Laravel Verwendung anfordern Validierung mit api

public function store(RideUpdateRequest $request) 
    { 
     $user = JWTAuth::parseToken()->authenticate(); 

     $ride = Ride::create([ 
      'user_id'  => $user->id, 
      'time'   => $request->time, 
      'date'   => $request->date, 
      'type_id'  => $request->type_id, 
      'location_id' => $request->location_id, 
      'billabletime' => $request->billabletime 
     ]); 

     $ride->save(); 

     return response()->json(['success' => 'Rit succesvol aangemaakt.'], 200); 
    } 

RideUpdateRequest:

public function rules() 
    { 
     return [ 
      'time'    => 'required|integer', 
      'date'    => 'required|date', 
      'type_id'   => 'required|integer', 
      'location_id'  => 'required|integer', 
      'billabletime'  => 'required|integer' 
     ]; 
    } 

Wie konnte ich eine Fehlermeldung zurück geben in json (wenn die Anfragevalidierung fehlschlägt)? Gerade jetzt im Postboten bekomme ich nichts zurück?

--EDIT--

Antwort:

{ 
    "billabletime": [ 
    "The billabletime field is required." 
    ] 
} 

konnte ich so etwas wie dieses ?:

{ 
     "error": { 
     "The billabletime field is required." 
     } 
    } 

Antwort

1

Wenn Sie einen Blick auf die nehmen FormRequest Klasse, Sie sehe eine response() Methode definiert als etwas wie:

So können Sie entweder ein Accept: aplication/json Request-Header mit der expectsJson Bedingung zu erfüllen, oder das Verhalten Standardantwort erzwingen, indem sepcifying die response() Methode in Ihrer eigenen RideUpdateRequest Klasse:

public function response(array $errors) 
{ 
    // Always return JSON. 
    return response()->json($errors, 422); 
} 
+0

danke! Noch eine Frage, ich empfange es nicht wie ein Objekt. Ist das möglich? Sehen Sie meine Bearbeitung für was ich meine. Danke – Jamie

+1

Sie können dies versuchen: 'Antwort Antwort() -> Json (['Fehler' => $ Fehler], 400);' –

1

Antwort :

{ 
    "billabletime": [ 
    "The billabletime field is required." 
    ] 
} 

konnte ich so etwas wie dieses ?:

{ 
    "error": { 
    "The billabletime field is required." 
    } 
} 

Laravel verwendet dieses Format, weil a) es mehrere Felder, die Validierung fehlschlagen sein können und b) kann es mehrere Ausfälle für ein bestimmtes Feld sein.

Zum Beispiel:

{ 
    "email": [ 
    "The email field is invalid." 
    ], 
    "password": [ 
    "The password field must contain a number.", 
    "The password field must contain a special character." 
    ] 
} 

Ihre "error": { ... } ist auch nicht notwendig, da Laravel Validierungssystem einen 422 Unprocessable Entity Code Status sendet mit der Antwort.

+0

Oke Ich verstehe das. Aber in meiner eckigen App ist es sehr schwierig, dieses Format zu verwenden. – Jamie

+0

@Jamie Dann müssen Sie entscheiden, welche der mehreren Fehler zurück gesendet werden. – ceejayoz