タイトル: ViewComposerを用いてviewに共通の値を付与する方法
SEOタイトル: 【Laravel】ViewComposerを用いてviewに共通の値を付与する方法
Layoutで必ず取得しなければならない値をわざわざ一つずつのコントローラーで取得するのは冗長的である。
当問題はViewComposerという機能を用いて解決することができる。
プロバイダーの作成
php artisan make:provider ComposerSeriviceProvider |
プロバイダーの登録
config/app.phpに以下の記述を追加する。
'providers' => [ ... App\Providers\ComposerSeriviceProvider::class, ] |
サービスプロバイダー
<?php namespace App\Providers; use App\Http\ViewComposers\CommonComposer; class ComposerSeriviceProvider extends ServiceProvider View::composer( // クロージャベースのコンポーザを使用する |
コンポーザー(クラスベースの場合)
<?php namespace App\Http\ViewComposers; use Illuminate\View\View; class CommonComposer /** /** $view->with('aaa', 'bbb') |
composeの実行タイミング
View::composer(...)はViewのレンダリング後に実行される。
View::creator(...)を使用するとレンダリング前に実行される。
例えばAuth::check()の値はcreatorを使用しなければ正しい真偽値が取得できないといった事例がある。