ビューコンポーザーを複数作り
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'
);
}
}
バージョンが変わるとけっこうあちこち変わるので気をつけないといけないですね。