Laravel 6 で各テンプレートに共通の変数を渡す方法
Laravel 6 で Controller からテンプレートに変数を渡す際には、下記のように view() の第二引数に指定することで実現できます。
app/Http/Controllers/SampleController.php
public function index()
{
return view('sample.index', ['message' => 'From Controller']);
}
resources/views/sample/index.blade.php
<body>
{{ $message }}
</body>
Webシステムの開発をしていると、全画面に共通の変数を渡したい場合があります。 上記方法だと、画面ごとに設定を書く必要があるため非効率的です。
そのような場合には、下記のように AppServiceProvider.php の boot() の中に追記すればOKです。
app/Providers/AppServiceProvider.php
<?php
...
use Illuminate\Support\Facades\View; // ←追加
...
public function boot()
{
// ▼下記3行を追加
View::composer('*', function($view) {
$view->with('message', 'From Provider');
});
}
...
Laravel 5.8 でも上記コードで動きます。
Laravel 6 からナンバリングのルールが変わったようで、メジャーバージョンアップに見えて、実は 5.9 の立ち位置みたいですね。