我正在使用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作为字符串记录,但错误仍然存在。
这令人费解 - 尽管我已经用正确的值替换了数组,但数组仍然出现在方法中。
有关如何避免阵列错误的任何想法?
谢谢
答案 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]) }}
内的所有内容都必须是字符串 - 因此错误。