【问题标题】:htmlspecialchars() expects parameter 1 to be string, array givenhtmlspecialchars() 期望参数 1 是字符串,给定数组
【发布时间】:2017-03-22 06:14:35
【问题描述】:

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

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

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

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

我发现问题出在这个选择框上

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

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

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

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

【问题讨论】:

  • 您将选择框命名为item[0][] 有什么原因吗?不能简单点item吗?
  • 不能是简单的字符串...用户可以动态添加

标签: php laravel laravel-5.3


【解决方案1】:

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

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

您必须将 [0] 放在括号“索引”中,如下所示:

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

然后在验证中使用

标题.*

规则

更新

因为我使用可以扩展的动态表单并添加了新的表单字段(可选),所以我需要将 [] 数组表示法作为名称,但实际上如果您已经硬编码了许多具有相同名称的字段,例如 item[] 您不必将 [0] 索引放入其中。验证将适用于他们。

只有当您有一个输入字段并且您将 [] 数组表示法放在名称旁边时才会出现问题,例如 'item[]'

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

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 2018-11-10
    • 2017-08-08
    • 1970-01-01
    • 2017-07-12
    • 2019-09-05
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多