Как сделать многомерный массив в блейде и отправить его на контроллер, используя laravel 5.5+ - PullRequest
0 голосов
/ 10 апреля 2020

Я делаю вложенный массив в .blade. php и отправляю его в контроллер. php, но я не получаю вложенный массив в контроллере. php Так что я хочу вложенный массив как:

"itemized" => array: 1 [▼ 0 => "[▼ 0 => [" small ", 10," Recurring "], ▼ 1 => [" medium ", 0," Recurring "], ▼ 2 => ["large", 0, "Recurring"], ▼ 3 => ["oversize", 0, "Recurring"]] "]

.blade. php

@php
                $itemized_arr = array
                (
                    array("small",$job->small_items*$box[0]->price,'Recurring'),
                    array("medium",$job->medium_items*$box[1]->price,'Recurring'),
                    array("large",$job->large_items*$box[2]->price,'Recurring'),
                    array("oversize",$job->oversize_items*$box[3]->price,'Recurring'),
                );
            @endphp

            <input type="hidden" name="itemized[]" value="{{ json_encode($itemized_arr, TRUE) }}">

контроллер. php

это то, что я получаю в контроллере. php от

dd ( $ request-> all ();

"itemized" => array: 1 [▼ 0 => "[[" small ", 10," Recurring "], [" medium ", 0 , "Recurring"], ["large", 0, "Recurring"], ["oversize", 0, "Recurring"]] "]

1 Ответ

1 голос
/ 10 апреля 2020

Поскольку у вас есть один элемент, вам не нужно несколько вещей при создании элемента html. Поэтому удалите [] из имени элемента.

Попробуйте этот

blade-сервер. php

@php

$itemized_arr = array
(
    array("small",$job->small_items*$box[0]->price,'Recurring'),
    array("medium",$job->medium_items*$box[1]->price,'Recurring'),
    array("large",$job->large_items*$box[2]->price,'Recurring'),
    array("oversize",$job->oversize_items*$box[3]->price,'Recurring'),
);

@endphp

<input type="hidden" name="itemized" value="{{ json_encode($itemized_arr, TRUE) }}">

и в контроллере введите $ input ['itemized'] - строка (строка JSON). все, что вам нужно сделать, это декодировать строку с помощью функции json_decode

controller. php

$input = $request->all(); 
$itemized = json_decode($input['itemized']);
...