htmlspecialchars() 期望参数 1 为字符串,数组给定

htmlspecialchars() expects parameter 1 to be string, array given

我有一个表格,如果我提交包含所有正确数据的表格,一切都会非常顺利...但是如果我故意制造任何缺陷

(验证例如'title' => 'required|min:2'

并且我只输入了一个字符作为标题,或者如果我遗漏了任何必填字段,我会收到此错误消息:

htmlspecialchars() expects parameter 1 to be string, array given

我发现问题出在这个 select 框

{!! Form::select('item[0][]', $items, null, ['class' => 'form-control', 'required']) !!}

我什至尝试使用没有表单助手的普通 select 框 {!! !!}

但我仍然得到同样的错误!

所以当存在嵌套数组时,问题出在验证的某个地方....有没有办法解决这个问题?

好的,我终于找到了这个问题的答案....似乎 Laravel 5.3 中发生了一些变化,如果你想使用这样的数组命名

{!! Form::label('title', '* Eventname: ', ['class' => 'control-label']) !!}
{!! Form::text('title[]', null, ['class' => 'form-control', 'required') !!}

您必须将 [0] 内容放在方括号 'indices' 中,如下所示:

{!! Form::text('title[0]', null, ['class' => 'form-control', 'required') !!}

然后在验证中使用

标题。*

规则

更新

因为我使用可以扩展的动态表单并添加了新的表单字段(可选),所以我需要为名称添加 [] 数组符号,但实际上如果您已经硬编码了许多具有相同名称的字段,例如 item[ ] 你不必在里面放 [0] 个索引。验证对他们有用。

仅当您只有一个输入字段并且在名称中放置 [] 数组符号时才会出现问题,例如 'item[]'

如果任何验证规则被破坏,这将触发错误...