序列化Laravel刀片阵列

问题描述 投票:0回答:1

我正在使用包含数千个变量的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阵列。我该如何实现?还是有更好的解决方案。

编辑request data dump

javascript php laravel forms laravel-blade
1个回答
0
投票
        $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

© www.soinside.com 2019 - 2024. All rights reserved.