FormRequests in Laravel 5 è un buon approccio per la convalida e l'autorizzazione. Ma come procedere se devo convalidare la richiesta che contiene dati per una relazione uno a molti. Ad esempio se ho un'app fattura semplice. Una fattura ha molti servizi. mio modulo di richiesta POST contiene questi dati:Laravel 5 richieste modulo - convalida dati correlati
array (size=5)
'date' => string '2014-11-14' (length=10)
'num' => string '175' (length=3)
'client_id' => string '5' (length=1)
'vat' => string '1' (length=1)
'services' =>
array (size=2)
0 =>
array (size=3)
'description' => string 'Service 1' (length=36)
'value' => string '10' (length=2)
'items' => string '2' (length=1)
1 =>
array (size=3)
'description' => string 'Service 2' (length=11)
'value' => string '20' (length=2)
'items' => string '2' (length=1)
Ora in classe InvoiceFormRequest posso convalidare i dati della fattura, ma come procedere con i servizi:
<?php namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Response;
class InvoiceFormRequest extends FormRequest
{
public function rules()
{
return [
'date' => 'required',
'num' => 'required',
'client_id' => 'required',
'vat' => 'required'
];
}
public function authorize()
{
return true;
}
}
Grazie in anticipo!
Aggiornamento: Come ho letto in here laravel 5.2 sarà in grado di scrivere qualcosa del genere:
'services.*.description' => 'required',
'services.*.value' => 'required:numeric',
'services.*.items' => 'required:integer'
È necessario utilizzare un validatore personalizzato. Vedi [this] (http://stackoverflow.com/a/26616023/397195) se vuoi il tuo validatore personalizzato all'interno di 'FormRequest'. – Marwelln
L'aggiornamento dovrebbe essere una risposta. – whoan
Sì, lo farò. Ora è un dato di fatto. Laravel 5.2 appena rilasciato. – fireball70