Laravel (4.2) form:text issue: htmlentities() 期望参数 1 为字符串
Posted
技术标签:
【中文标题】Laravel (4.2) form:text issue: htmlentities() 期望参数 1 为字符串【英文标题】:Laravel (4.2) form:text issue: htmlentities() expects parameter 1 to be string 【发布时间】: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 的重复实例。然而,这并不能解释为什么相同的代码适用于我的颜色字段。
澄清一下,问题似乎与数组值是否为空有关(我的控制器中有一个必需的验证规则)
【参考方案1】:
您会收到错误 htmlentities() expects parameter 1 to be a string, array given
,因为 []
附加到 heading
和 colour
使它们成为 HTML 中的数组,当 POSTed
时。
你最好做这样的事情(在 php 中,在你的控制器中,当你提交时):
$colourArray = [];
foreach(Input::get('colours') as $colour)
array_push($colourArray, htmlentities($colour));
那么您将在$colourArray
中去除颜色。
我还没有实际测试过,但我希望它有意义。
【讨论】:
谢谢杰克。奇怪的是 colour[] 数组的逻辑是有效的,但是对于 heading[] 数组却返回了这个错误。 你能var_dump()
color吗?
我不认为该逻辑实际上适用于 colour[],而只是跳过/忽略它。尝试循环使用上面的代码,看看是否有帮助。以上是关于Laravel (4.2) form:text issue: htmlentities() 期望参数 1 为字符串的主要内容,如果未能解决你的问题,请参考以下文章