2015-04-17 4 views
3

Цель состоит в том, что я хочу PASSE ВСЕХ передаваемых данных от контроллера к представлению в одной глобальных переменной JavaScript, это пример:Laravel 5: Получить все передаваемые данные в шаблоне вида

В контроллер

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

+0

вар _backendData = {!! $ data1 !!} –

+0

Я хочу получить ВСЕ данные, которые контроллер передал в представление, а не только $ data1, я отредактировал свой пост и добавил $ data2 ... – Sn0opr

ответ

1

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

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

Вид:

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

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

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

Спасибо за помощь, я думал о создании всех данных в одной переменной, но я искал более «удобный» способ – Sn0opr

0

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

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

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

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

Вид:

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