我有一个表格,如果我提交所有正确数据的表格,一切都很顺利......但如果我故意制造任何缺陷
(例如'title' => 'required|min:2'
验证)
我只为标题添加了一个字符,或者如果我错过任何必填字段,我会收到此错误:
htmlspecialchars() expects parameter 1 to be string, array given
我已经发现问题在于这个选择框
{!! Form::select('item[0][]', $items, null, ['class' => 'form-control', 'required']) !!}
我甚至尝试使用没有表单助手的普通选择框{!! !!}
但我仍然得到同样的错误!
所以当存在嵌套数组时,问题就出现在验证的地方....有没有办法解决这个问题?
答案 0 :(得分:4)
好的我终于得到了这个问题的答案......看起来Laravel 5.3中的某些内容已经发生了变化,如果你想拥有一个像这样的数组的名字
{!! Form::label('title', '* Eventname: ', ['class' => 'control-label']) !!}
{!! Form::text('title[]', null, ['class' => 'form-control', 'required') !!}
你必须把[0]的东西放在括号'index'中,如下所示:
{!! Form::text('title[0]', null, ['class' => 'form-control', 'required') !!}
然后在验证中使用
标题。*
用于规则
更新
因为我使用可以展开的动态表单并添加了新的表单字段(可选)我需要为名称添加[]数组表示法,但实际上如果你已经硬编码了许多具有相同名称的字段,如item [] 你不必把[0]索引放在里面。验证将适用于他们。
只有当您有一个输入字段并且在名称上添加[]数组符号时才出现此问题,例如'item[]'
如果任何验证规则被破坏,这将触发错误......