Для того, чтобы передать переменные php из laravel в vue-интерфейс, я создал класс Javascript. Я использую этот метод статического метода put для отправки ассоциативного массива в интерфейс.
<?php
namespace App\Helpers;
class Javascript
{
public static function put($array, $request)
{
//I call this static method to pass backend variables to Vue, from blade I json_encode the payload, assign it to a window variable
//and later add it to the Vue.prototype so I can access in vue components like this.$app.whatever.
//This helper method can be called more than one time in laravel's request->reponse cycle, from middleware, controller action, route redirect ...
//so instead of creating recreating $app array everytime I want to find a way to push passed key value pairs to a global javascript object
$app = array();
$app = array_merge($request->globals, $array);
view()->share('app', $app);
}
}
Когда я хочу вернутьпросмотр лезвия laravel с данными javascript. Я делаю это так:
$featuredPosts = Post::where('isFeatured', true)->where('isVisible',true)->with('postcategory')->get();
Javascript::put([
'meta' => $meta,
'featuredPosts' => $featuredPosts,
], $request);
return view('publicaciones.list', compact('meta'));
И в моем макете мастер-блэйда:
<script type="text/javascript">window.$app = {!! json_encode( $app ) !!};</script>
Другой случай, когда я хочу иметь глобальные переменные для всех маршрутов. / views, для этой цели у меня есть глобальное промежуточное ПО под названием GlobalsVar, где я это делаю.
public function handle($request, Closure $next)
{
$globals['auth'] = Auth::user() ? User::with('appointment')->find(Auth::id()) : false;
$globals['previousUrl'] = URL::previous();
$request->globals = $globals;
return $next($request);
}
В настоящее время внутри моего класса Javascript я создаю массив empy и объединяю часть моих запросов с переданным массивом из моих контроллеров,Я также передаю объект запроса в качестве параметра seconda, я хочу улучшить это двумя способами:
1) Каждый раз, когда я вызываю статический метод Javascript :: put, переданные значения объединяются в существующий объект, потому что есливо время цикла запроса -> ответа я вызываю Javascript :: put полезная нагрузка воссоздается и предыдущие данные теряются, есть ли способ преЭти данные?
2) Я не хочу передавать объект Request $ request каждый раз, когда я запускаю Javascript :: put, есть ли способ всегда внедрять метод Request