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 ответа:
Чтобы получить доступ ко всем этим данным, Вы передаете их как один элемент корневого массива. Потому что эти ключи становятся переменными представления.
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>