Сериализация массивов лезвий Laravel - PullRequest
0 голосов
/ 08 ноября 2019

Я работаю над длинной формой в лезвии ларавеллы, состоящей из тысяч переменных. Я использую массив для атрибута имени в форме. Форма отправляется нормально, но иногда в моем журнале есть исключение: «Превышен предел максимальной переменной php для входной переменной», и некоторые данные отсутствуют в моих записях. Превышение максимального значения переменной php не будет работать для меня, поэтому я решил сериализовать данные формы в одну переменную и передать их контроллеру 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. Как мне этого добиться? или это есть лучшее решение.

Правки запрос дампа данных

1 Ответ

0 голосов
/ 08 ноября 2019
        $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

...