我需要使用Request rules()方法验证一些输入。
这是我的观点(另外+8个字段):
{!! Form::open(['method'=>'POST','route' => ['method.store']]) !!}
@for($add = 0; $add < $number; $add++ )
{!! Form::text('first_name[]') !!}
@endfor
@include('part.error')
{!! Form::submit('Add') !!}
{!! Form::close() !!}
用户可以选择添加的数量(最多10个)。 for循环包括部分但我确实重写它只包括这一个字段只是为了可读性。
这是我的dd($ this-&gt; first_name);输出:
array:3 [▼
0 => ""
1 => ""
2 => ""
]
这是我在我的请求中到目前为止所得到的:
public function rules()
{
for ($i = 0; $i < $this->number; $i ++)
{
$rules['first_name.' . $i] = 'required'
...
...
}
return $rules;
}
我确实尝试过:
$rules['first_name[' . $i.']'] = 'required';
到目前为止我唯一得到的是:
htmlentities() expects parameter 1 to be string, array given...
在我的部分(表单字段)中。
答案 0 :(得分:0)
问题是您的字段名称。当验证失败并重定向到您的表单时,它无法判断哪个字段失败,因为它们没有唯一的名称。
将每个字段的ID添加到字段的名称中,如下所示:
@for($add = 0; $add < $number; $add++ )
{!! Form::text("first_name[$add]") !!}
@endfor
此外,如果您希望在验证失败后自动用旧条目填充字段,请将空值作为文本字段的默认文本传递,如下所示:
{!! Form::text("first_name[$add]", null) !!}
这应该可以解决问题。