一番外側のレイアウトの役割を持ったbladeファイルにwindow.Laravel
とグローバルに定義をする
そして他のビューや子のビューでレンダリングできるようにscripts
という名前でスタックを作っておく(@stack('scripts')
)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<script>
window.Laravel = window.Laravel || {};
</script>
@stack('scripts')
<body>
@yield('content')
</body>
</html>
そして子のビューなどでJSへ変数を渡したい場合があるときは、@push
ディレクティブに@stack
ディレクティブに使った名前を使用して変数を代入します。これでJS側で変数を使うことができます
// $greeting = 'Hello world!';
@push('scripts')
<script>
window.Laravel.greeting = $greeting;
</script>
@endpush