到目前为止,我正在使用(并且喜欢)Laravel 5表单请求验证。但现在我不得不试图验证相关模型。
假设我有一个Car
型号,其中包含许多Wheel
型号,我想验证一辆新车。在CarController@store
方法中,我使用以下方法来验证汽车,但这当然不会验证车轮。
public function store(StoreCarRequest $request)
{
// Create the car
}
需要采取哪些措施来验证Wheel
的{{1}}?可以通过表单请求验证来完成吗?
修改
我越来越近了。剩下的问题是我需要遍历存储在数组中的轮子(因为HTML输入名称是例如Car
),但验证器正在搜索wheels[0][color]
字段,而不是{{ 1}}。
color
StoreCarRequest.php
wheels[0][color]
StoreWheelRequest.php
public function store(StoreCarRequest $r)
{
// Validate the wheels
foreach ($r->input('wheels') as $wheel)
{
// TODO: use $wheel somewhere?
$snr = new StoreWheelRequest;
$this->validate($r, $snr->rules()); // Validation fails: 'color' field is required
}
// Validation passed, create the car (and the wheels)
}
HTML表单
public function rules()
{
return [
'engine' => 'required',
'seats' => 'required',
];
}
答案 0 :(得分:0)
经过一番谷歌搜索后,我偶然发现了以下文章:http://ericlbarnes.com/laravel-array-validation/
归结为通过迭代输入数组在rules()
方法中动态添加规则。
答案 1 :(得分:0)
您可以使用点表示法来验证嵌套数组:
public function rules()
{
return [
'engine' => 'required',
'seats' => 'required',
'wheel.color' => 'required',
];
}