【发布时间】:2015-10-14 08:17:38
【问题描述】:
我正在使用 Laravel 5.1,并且正在努力解决处理使用 'Form::old()' 检索的旧表单数据的问题
我的表单字段名称是数组。如果存在验证问题,则提交表单时,用户会按预期重定向回来,然后我的目标是检索已提交的值以重新填充表单。在这种情况下,返回的值在一个数组中。
但是,标准表单助手无法处理数组。它返回一个错误:
htmlentities() expects parameter 1 to be string, array given
所以我决定尝试拦截错误并创建自己的辅助函数来捕获数组,检索正确的值,然后将其传递以创建表单元素。
这是我的辅助函数:
public function arrayHidden($name, $value = null, $options = array())
{
if(isset($options) && array_key_exists('key', $options) && is_array($value)) {
$value = $value[$options['key']];
}
return $this->input('hidden', $name, $value, $options);
}
这是我在页面中使用它的方式:
Form::arrayHidden('id[]', Form::old('id', $fixture->id), ['key'=>$key])
$key 是在 foreach 循环中创建的索引
对返回的$value 进行 var_dump,它被标记为字符串,但错误仍然存在。
这令人费解——即使我用正确的值替换了一个数组,该数组仍然出现在方法中。
关于如何避免数组错误的任何想法?
谢谢
【问题讨论】: