【问题标题】:Serializing Laravel blade arrays序列化 Laravel 刀片阵列
【发布时间】:2020-03-05 00:32:15
【问题描述】:

我正在使用 laravel Blade 中包含数千个变量的冗长表单。我在表单中使用名称属性的数组。表单提交正常,但有时我的日志中有一个例外,即“超出输入变量的 php 最大变量限制”并且我的记录中缺少一些数据。超过 php max 变量限制对我不起作用,所以我决定将表单数据序列化为单个变量并将其传递给 laravel 控制器,我可以在其中取消序列化并使用数据。但是我被困在我的名字属性是一个数组的地方。到目前为止我尝试的是:

我的 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

【问题讨论】:

  • How do I PHP-unserialize a jQuery-serialized form? 的可能重复项也使用$values = []; parse_str($data['form_data'], $values);echo $values['input1'];
  • @N69S 没有成功。
  • 在使用 php 反序列化之前执行 dd($data)
  • @N69S 在问题详情中添加了转储
  • 我收到“unserialize(): Error at offset 0 of 18006 bytes”

标签: javascript php laravel forms laravel-blade


【解决方案1】:
        $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

【讨论】:

    猜你喜欢
    • 2021-04-12
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2021-11-06
    • 2013-09-03
    • 1970-01-01
    相关资源
    最近更新 更多