Laravel 5 の FormRequests は、検証と承認のための優れたアプローチです。しかし、1対多の関係のデータを含むリクエストを検証する必要がある場合は、どうすればよいですか。たとえば、単純な請求書アプリがあるとします。1 つの請求書には多くのサービスが含まれています。私のフォーム投稿リクエストには、次のデータが含まれています。
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)
InvoiceFormRequest クラスで請求書データを検証できるようになりましたが、サービスを続行する方法は次のとおりです。
<?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;
}
}
前もって感謝します!
更新: Laravel 5.2でここで読んだように、次のようなものを書くことができます:
'services.*.description' => 'required',
'services.*.value' => 'required:numeric',
'services.*.items' => 'required:integer'