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,因为 [] 附加到 headingcolour 使它们成为 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 为字符串的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 表单 - 未定义路由

laravel 4.2 并记住我更新

Laravel 5 Form 输入不采用 Bootstrap 类

带有引导程序的 LARAVEL 样式的密码字段

laravel validate

Post 方法在 Laravel 中不起作用