laravel形式帮手htmlentities错误

时间:2015-07-23 20:20:54

标签: php laravel

我正在使用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作为字符串记录,但错误仍然存​​在。

这令人费解 - 尽管我已经用正确的值替换了数组,但数组仍然出现在方法中。

有关如何避免阵列错误的任何想法?

谢谢

1 个答案:

答案 0 :(得分:1)

function voteup(id){ var v = parseInt($('#span_'+id).text()); if ($('#up_'+id).hasClass('liked')){ var ajax = ajaxObj("POST", "voteSystem.php"); ajax.onreadystatechange = function() { $('#up_'+id).removeClass('liked'); $('#vote_count_'+id).removeClass("chakraliked"); $('#span_'+id).text(v - 1); } ajax.send("id="+id+"&n=n"); } else if ($('#down_'+id).hasClass('disliked')){ var ajax = ajaxObj("POST", "voteSystem.php"); ajax.onreadystatechange = function() { $('#down_'+id).removeClass('disliked'); $('#vote_count_'+id).removeClass("chakradisliked"); $('#up_'+id).addClass('liked'); $('#vote_count_'+id).addClass("chakraliked"); $('#span_'+id).text(v + 2); } ajax.send("id="+id+"&l=l"); } else { var ajax = ajaxObj("POST", "voteSystem.php"); ajax.onreadystatechange = function() { $('#up_'+id).addClass('liked'); $('#vote_count_'+id).addClass("chakraliked"); $('#span_'+id).text(v + 1); } ajax.send("id="+id+"&l=l"); } } 必须返回一个数组。

你必须在某个地方使用它:

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

{{ Form::arrayHidden('id[]', Form::old('id', $fixture->id), ['key'=>$key]) }} 内的所有内容都必须是字符串 - 因此错误。