【问题标题】:Laravel (4.2) form:text issue: htmlentities() expects parameter 1 to be stringLaravel (4.2) form:text issue: htmlentities() 期望参数 1 为字符串
【发布时间】:2015-04-30 08:48:03
【问题描述】:

我的 Laravel 应用程序 (4.2) 中有一个用于编辑数据库记录的视图。

我使用 form::text 方法将两个值 - 颜色和标题 - 作为数组存储:

@foreach($colours as $key => $value)
    {{ Form::label('heading_' . $key,'Heading ' . ($key + 1)) }}                            
    {{ Form::text('heading[]', '', ['id' => 'heading_' . $key, 'class' => 'u-full-width']) }}
    {{ Form::label('colour_' . $key,'Colour ' . ($key + 1)) }}
    {{ Form::text('colour[]', $value, ['id' => 'colour_' . $key, 'class' => 'u-full-width']) }}
@endforeach

初始编辑表单很好,但如果我在返回原始视图(通过我们的控制器)时遇到问题(例如字段为空),则会引发以下错误:

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

奇怪的是,它适用于 colour[] 字段,但似乎会为 heading[] 字段抛出错误。

对为什么会发生这种情况有任何想法吗?

干杯

科尔

【问题讨论】:

  • 你能发一个var_dump()$colours 吗? (隐藏任何敏感信息)
  • 还有——你说当你“return to the original view”时发生错误——是你从原始视图显示的sn-p吗? (即,您粘贴的 sn-p 肯定是引发错误的东西吗?)
  • 两个有问题的变量($heading 和 $colour)的 var_dumps:array(6) { [0]=> string(0) "" [1]=> string(4) "Cash" [2]=> string(18) "Health & Wellbeing" [3]=> string(6) "Wealth" [4]=> string(9) "Lifestyle" [5]=> string(6) "Shared" }array(6) { [0]=> string(7) "#999999" [1]=> string(7) "#990099" [2]=> string(7) "#33ccff" [3]=> string(7) "#ffffff" [4]=> string(7) "#000000" [5]=> string(7) "#33ffcc" } 如果我从视图中注释掉 {{ Form::text('heading[]' …)}},那么页面/视图返回正常。在回答您的问题@stef 时,sn-p 来自原始视图。
  • 要添加更多信息,如果我将视图缩减为 {{ Form::text('heading[]') }} 它仍然会引发 htmlentities() 错误。但是,如果我删除它,则视图将按预期返回。问题似乎是视图不喜欢使用 name 属性的数组来显示 form::text 的重复实例。然而,这并不能解释为什么相同的代码适用于我的颜色字段。
  • 澄清一下,问题似乎与数组值是否为空有关(我的控制器中有一个必需的验证规则)

标签: php forms validation laravel views


【解决方案1】:

您会收到错误 htmlentities() expects parameter 1 to be a string, array given,因为 [] 附加到 headingcolour 使它们成为 HTML 中的数组,当 POSTed 时。

你最好做这样的事情(在 PHP 中,在你的控制器中,当你提交时):

$colourArray = [];

foreach(Input::get('colours') as $colour) {
    array_push($colourArray, htmlentities($colour));
}

那么您将在$colourArray 中去除颜色。

我还没有实际测试过,但我希望它有意义。

【讨论】:

  • 谢谢杰克。奇怪的是 colour[] 数组的逻辑是有效的,但是对于 heading[] 数组却返回了这个错误。
  • 你能var_dump()color吗?
  • 我不认为该逻辑实际上适用于 colour[],而只是跳过/忽略它。尝试循环使用上面的代码,看看是否有帮助。
猜你喜欢
  • 2017-09-23
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 2015-04-30
  • 2015-06-27
  • 1970-01-01
相关资源
最近更新 更多