【发布时间】: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