首页 文章

Laravel验证输入数组

提问于
浏览
4

我有一个表格:

<input type="text" name="name[1]">
<input type="text" name="name[2]">
<input type="text" name="name[3]">
<input type="submit" value="Submit">

我用规则创建了表单验证文件:

class formRequest extends FormRequest {
....
public function rules()
{
    return ['name.*' => 'unique:names'];
}

public function messages()
{
    return ['name.unique' => 'Name is already in DB!'];
}

在输入中提交具有值(例如'John')的表单(例如 name[1] )后,我会得到:

SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'name.1'(SQL:从names中选择count(*)作为聚合,其中name .1` = John)

所以它正在处理 name.* 而不是创建另一个字段名称,而不是循环遍历数组 .

我的Laravel Framework是版本5.4.19 . 根据the docsname.* 应该在验证期间迭代数组 .

我做错了什么?

1 回答

  • 2

    默认情况下,如果您没有为 unique 规则提供列名,Laravel将添加输入名称,在您的情况下,输入名称是一个数字 .

    要解决此问题,请将规则更改为以下内容:

    return ['name.*' => 'unique:names,name'];
    

相关问题