Laravel 5.4を使用しています。

ComposerServiceProviderの作成

最初にapp/Providers/ComposerServiceProvider.phpを作成します。

例えばViewに$hogeという変数で「hogehoge」と表示させたい場合は下記のようにします。

app/Providers/ComposerServiceProvider.php

  1. <?php
  2. namespace App\Providers;
  3.  
  4. use Illuminate\Support\Facades\View;
  5. use Illuminate\Support\ServiceProvider;
  6.  
  7. class ComposerServiceProvider extends ServiceProvider
  8. {
  9. public function boot()
  10. {
  11. View::composer('*', function($view) {
  12. $view->with('hoge', 'hogehoge');
  13. });
  14. }
  15. }

View::composerの第一引数に表示するViewを指定します。

‘*’ すべてのView
‘layouts/app’ layouts/app.blade.phpを使用しているView
[‘posts/*’,’tags/*’] posts、tagsディレクトリ内のView
配列にすることで複数の指定したViewで使用できます。

providersにComposerServiceProviderの登録

作成したComposerServiceProviderconfig/app.phpprovidersに登録します。

config/app.php

  1. 'providers' => [
  2. // ・・・
  3. App\Providers\ComposerServiceProvider::class,
  4. ],

これでViewで使用することができます。
指定したViewで$hoge変数が展開できるはずです。

ViewComposerをクラス化して外部ファイルにする

設定するViewComposerが多くなるとComposerServiceProviderクラスが肥大化してしまいます。
クラス化して外部ファイルにする方法をご紹介します。

ファイルを作成する場所は任意の場所で大丈夫ですが、ここではapp/Http/ViewComposersに作成します。

app/Http/ViewComposers/HogeComposer.php

  1. <?php
  2. namespace App\Http\ViewComposers;
  3. use Illuminate\View\View;
  4.  
  5. class HogeComposer
  6. {
  7. /**
  8. * @var String
  9. */
  10. protected $hoge;
  11. public function __construct()
  12. {
  13. $this->hoge = 'hogehoge';
  14. }
  15. /**
  16. * Bind data to the view.
  17. * @param View $view
  18. * @return void
  19. */
  20. public function compose(View $view)
  21. {
  22. $view->with('hoge', $this->hoge);
  23. }
  24. }

あとはComposerServiceProvider.phpを下記のように変更します。

app/Providers/ComposerServiceProvider.php

  1. <?php
  2. namespace App\Providers;
  3.  
  4. use Illuminate\Support\Facades\View;
  5. use Illuminate\Support\ServiceProvider;
  6.  
  7. class ComposerServiceProvider extends ServiceProvider
  8. {
  9. public function boot()
  10. {
  11. View::composer('*', 'App\Http\ViewComposers\HogeComposer');
  12. }
  13. }
参考サイト
ビュー 5.4 Laravel – ビューコンポーザ