使用相关模型的Laravel 5表单请求验证

时间:2015-12-01 12:14:16

标签: php laravel laravel-5

到目前为止,我正在使用(并且喜欢)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',
    ];
}

2 个答案:

答案 0 :(得分:0)

经过一番谷歌搜索后,我偶然发现了以下文章:http://ericlbarnes.com/laravel-array-validation/

归结为通过迭代输入数组在rules()方法中动态添加规则。

答案 1 :(得分:0)

您可以使用点表示法来验证嵌套数组:

public function rules()
{
    return [
        'engine' => 'required',
        'seats'  => 'required',
        'wheel.color'  => 'required',
    ];
}