Laravel 5: получить все переданные данные в шаблоне представления


Цель состоит в том, что я хочу передать все переданные данные из контроллера в представление в одной глобальной переменной JavaScript, это пример:

В контроллере

index(){
 return veiw('path.to.view', ['data1' => $data1, 'data2' => $data2]);
}

В представлении

<script>
   var _backendData = {!! $allData !!}
   //$allData should contain ALL the passed data from the controller
</script>

I хранить все полученные данные от контроллера в $allData

3 4

3 ответа:

Чтобы получить доступ ко всем этим данным, Вы передаете их как один элемент корневого массива. Потому что эти ключи становятся переменными представления.

return view('path.to.view', [
   'allData' => ['data1' => $data1, 'data2' => $data2]
]);

Вид:

<script>
    var _backendData = {!! $allData !!}
</script>

Однако это не будет работать должным образом. Вы должны использовать JSON для передачи данных в JavaScript:

var _backendData = JSON.parse("{!! json_encode($allData) !!}");

Установите его на контроллер -

return veiw('path.to.view', ['allData' => ['data1' => $data1, 'data2' => $data2]]);

Когда вы возвращаете массив данных, вы можете получить доступ к элементам по одному, как показано ниже. Вы не можете просто назначить PHP array в качестве JavaScript array.

return view('path.to.view', [
   'allData' => ['data1' => $data1, 'data2' => $data2]
]);

Вид:

<script>
    var _backendData = {!! $allData['data1'] !!}
</script>