2017-09-18 2 views
0

Ich schreibe Validator in Laravel, und so bekomme ich JSON Format Anfrage.Laravel Eloquent Validation Anfrage Artikel Feld foreach

Ich habe Validierungslogik für jsons Hauptfelder wie ID, Name geschrieben ... Jetzt habe ich Elemente Array von Objekten in JSON, und ich muss jedes Element von diesem Array, das übergeben wird, validieren.

Hier Beispiel json Anfrage: https://api.myjson.com/bins/ob3lh

Und hier ist mein Validator so weit:

private function update() 
    { 
    return [ 
     'id' => 'required', 
     'place_id' => 'required', 
     'place_table_id' => 'required', 
     'user_id' => 'required', 
     'seen' => 'required', 
     'state' => 'required', 
     'number' => 'required', 
     'date' => 'required', 
     'price' => 'required', 
     'table_number' => 'required', 
     'note' => 'required', 
    ]; 
    } 

Wie kann ich einfach zum Beispiel verschachtelte Validator, die jedes Objekt der Elemente validiert?

+0

Convert-Objekt-Array und dann – C2486

+0

wie '" Array bestätigen *:

private function update() { return [ 'id' => 'required', 'place_id' => 'required', 'place_table_id' => 'required', 'user_id' => 'required', 'seen' => 'required', 'state' => 'required', 'number' => 'required', 'date' => 'required', 'price' => 'required', 'table_number' => 'required', 'note' => 'required', 'items' => 'required|array|min:1', 'items.*.id' => 'required', 'items.*.name' => 'required', 'items.*.amount' => 'required', 'items.*.price' => 'required', ]; } 

Sie weitere Informationen zu diesem Thema in der Dokumentation finden.. obj_name "=>" required "' – C2486

Antwort

3

Sie können verschachtelte Validierungsregeln wie folgt definieren: https://laravel.com/docs/5.5/validation#validating-arrays

+0

"*" kümmert sich um Array-Index oder wird nur ein Pfad von dynamischen –

+0

Das sieht gut aus, aber ich würde nur noch eine Sache brauchen. Wie kann man dies erreichen, egal wie viele Elemente gezählt werden? Die Validierung schlägt fehl, wenn ich "items": [] übergebe, funktioniert aber, wenn ich "items" übergebe: "[]". – ldragicevic

+0

Es überprüft nur vorhandene Elemente. Wenn Sie sicherstellen möchten, dass immer mindestens 1 oder mehr Elemente vorhanden sind, können Sie folgende Zeile hinzufügen: ''items' => 'array | min: 1',' –