【问题标题】:laravel form helper htmlentities errorlaravel 表单助手 htmlentities 错误
【发布时间】: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,它被标记为字符串,但错误仍然存​​在。

这令人费解——即使我用正确的值替换了一个数组,该数组仍然出现在方法中。

关于如何避免数组错误的任何想法?

谢谢

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    Form::arrayHidden('id[]', Form::old('id', $fixture->id), ['key'=>$key]) 必须返回一个数组。

    您必须在某处这样的视图中使用它:

    {{ Form::arrayHidden('id[]', Form::old('id', $fixture->id), ['key'=>$key]) }}
    

    {{ }} 中的所有内容都必须是字符串 - 因此会出现错误。

    【讨论】:

    • 排序和不是 - 同时但它导致了一个解决方案。进一步挖掘,在 Form 包中,如果存在会话数据,则该值是从会话数据中获取的,因此尽管尽一切努力将数组转换为值,但包默认为会话数据。我目前正在扩展我的自定义函数以考虑到这一点。此外,Form::old 函数不同于辅助函数 old() Form::old 会忽略它出现的默认值。谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2013-06-17
    • 2013-02-10
    相关资源
    最近更新 更多