Laravel 5使用表单请求验证克隆字段


Laravel 5 validate cloned fields using form request

我有一个使用克隆jQuery插件克隆表单元素的表单。要克隆的元素如下所示:

<div class="form-group">
    <label for="name">Item name</label>
    <input class="form-control" name="name[]" type="text">
</div>
<div class="form-group">
    <label for="count">Item count</label>
    <input class="form-control" name="count[]" type="text">
</div>

可以看到,每个输入都是数组而不是字符串。我想验证那些使用Laravel表单请求。以下是我的规则:

public function rules()
{
    return [
        'name'  => 'required|between:3,50',
        'count' => 'required|integer|min:1',
    ];
}

但这不起作用。当我提交表单时,我得到了以下错误消息:

htmlentities() expects parameter 1 to be string, array given
我一直在寻找解决办法,但就是找不到合适的。任何建议将不胜感激!

基本上,在您的rules()方法中,您需要确定POST中有多少namecount元素,然后为每个元素创建规则:

public function rules()
{
    $rules = [];
    foreach ($this->request->get('name') as $index => $val) {
        $rules['name.' . $index] = 'required|between:3,50';
    }
    foreach ($this->request->get('count') as $index => $val) {
        $rules['count.' . $index] = 'required|integer|min:1';
    }
    return $rules;
}