我正在使用包含数千个变量的Laravel刀片制作冗长的表格。我在表单中使用数组作为名称属性。表单提交很好,但是有时我的日志中有一个例外,即“超出了输入变量的php最大变量限制”,并且某些数据在我的记录中丢失了。超出php max变量限制对我来说不起作用,因此我决定将表单数据序列化为单个变量,并将其传递给laravel控制器,在其中我可以反序列化和使用数据。但是我陷入了我的name属性是数组的问题。到目前为止,我尝试过的事情是:
我的JS功能
function submitForm() {
var form_data = $("#edit-form").find(".check-enabled :input").serializeArray();
var form_obj = {'form_data' : form_data, "_token": $('#token').val()}
if($(".submit-input-checks:checked").length==0)
{
swal("Please select atleast 1 Record");
return false;
}
$.post("{{route('save_opps')}}", form_obj, function (data) {
});
}
在我的laravel控制器中,我的操作就像
public function save(Request $request)
{
$data = $request->all();
$data = unserialize($data['form_data']);
}
但是它不能像直接提交表单一样工作。刀片阵列不会转换为php阵列。我该如何实现?还是有更好的解决方案。
$temp = explode('&',$request['form_data']);
$data = [];
foreach ($temp as $key => $value)
{
$pair =[];
parse_str($value,$pair);
foreach ($pair as $key => $value1)
{
if(isset($data[$key]))
{
array_push($data[$key], is_array($value1) ? $value1[0] : $value1);
}else
{
$data[$key] = [];
array_push($data[$key],is_array($value1) ? $value1[0] : $value1);
}
}
}
//use $data further