Laravel5.5でビューコンポーザーで複数設定するには

ビューコンポーザーを複数作り
App\Http\Composers\ 配下に保存します。
例として

現在時刻を表示するビューコンポーザーとログイン情報を表示するビューコンポーザーをそれぞれ
TimeComposer.php
AuthViewComposer.php

とします。

app\Providers 配下にComposerServiceProvider.phpを作成しビューコンポーザーを登録するのですが

下記のurlの複数設定のやり方を試したがなぜかうまくいかない。
http://blog.fagai.net/2015/04/19/laravel-view-composer/

View::composer(
     'App\Http\Composers\TimeComposer' => ['dashboard.home', 'dashboard.account'],
     'App\Http\Composers\AuthViewComposer' => 'dashboard.*'
);
$ composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover

In ManagesEvents.php line 53:
                                                                               
  Type error: Too few arguments to function Illuminate\View\Factory::composer  
  (), 1 passed in /vagrant/example.com/vendor/laravel/framewo  
  rk/src/Illuminate/Support/Facades/Facade.php on line 221 and exactly 2 expe  
  cted                                                                         
                                                                               

Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

といった感じでエラーが出る。

色々調べた結果
https://qiita.com/nunulk/items/e0a048049137edc25fd8
分けるとうまくいきました。

class ComposerServiceProvider extends ServiceProvider
{
   public function boot()
   {
       View::composer(
           ['dashboard.home', 'dashboard.account'], 'App\Http\Composers\TimeComposer'
       );
       View::composer(
           ['dashboard.*'], 'App\Http\Composers\AuthViewComposer'
       );
   }

}

バージョンが変わるとけっこうあちこち変わるので気をつけないといけないですね。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする