2015-10-27 19 views
5

voglio fare un validatore laravel che convalida i campi all'interno di una matrice senza nome (0,1,2,3) che si trova all'interno di un array dilaravel validatore con un carattere jolly

così la mia matrice è come

array [ //the form data 
    "items" => array:2 [ //the main array i want to validate 
    0 => array:2 [ // the inner array that i want to validate its data 
     "id" => "1" 
     "quantity" => "1000" 
    ] 
    1 => array:2 [ 
    "id" => "1" 
    "quantity" => "1000" 
    ] 
    // other fields of the form, 
    ] 

] 

quindi quello che voglio è qualcosa di simile

$validator = Validator::make($request->all(), [ 
    'items.*.id' => 'required' //notice the star * 
    ]); 

risposta

5

laravel 5.2

La sintassi per la questione è ora supportato

http://laravel.com/docs/master/validation#validating-arrays

laravel 5.1

Innanzitutto creare il validatore con tutte le altre regole. Utilizzare la regola per gli elementi array

$validator = Validator::make($request->all(), [ 
    'items' => 'array', 
    // your other rules here 
]); 

quindi utilizzare il metodo Validator each per applicare un insieme di regole per ogni elemento dell'array voci.

$validator->each('items', [ 
    'id'  => 'required', 
    'quantity' => 'min:0', 
]); 

Questo imposterà automaticamente queste regole per voi ...

items.*.id  => required 
items.*.quantity => min:0 

https://github.com/laravel/framework/blob/5.1/src/Illuminate/Validation/Validator.php#L261

+1

Great! Non lo sapevo. Dovrebbe essere sicuramente incluso nei documenti! –

+1

sembra il nuovo laravel (5.2) ha aggiunto il mio suggerimento: D – AlhasanIQ

+0

@AlhasanIQ sì ed è bello poter impostare tutte le regole in un unico punto. Aggiornerò la mia risposta – andrewtweber

0

si potrebbe semplicemente fare qualcosa di simile:

$rules = []; 
    for($i = 0; $i < 10; $i++) { 
     $rules["items.$i.id"] = "required"; 
    } 
    $validator = \Validator::make($request->all(), $rules); 
+0

questo funziona, ma laravel ha già un 'each' metodo che compie la stessa cosa, quindi perché ri -inventare la ruota? – andrewtweber

+0

Sicuro? http://laravel.com/docs/5.1/validation#available-validation-rules Non riesco a trovarlo nei documenti. –

+0

non tutto è documentato. È nella fonte, vedi il link nella mia risposta – andrewtweber

Problemi correlati