[Laravel] インクルードされるビューにデータを渡す

ブログのようなサイドバーがあるレイアウト。サイドバーには記事のカテゴリ一覧を表示する。サイドバーを単独でビューとして定義すれば、各ビューでそれをインクルードできるようになる。問題はコントローラの実装。サイドバーにカテゴリ一覧データを渡すために、コントローラの各アクションでカテゴリのコレクションを取得してビューに渡す必要がある。煩雑だ。コントローラを煩わせずにビューに決まったデータを渡す方法はないものか?

公式ドキュメントを眺めていたらView Composerを使えばできそう。試す。

サイドバーのビュー

sidebar.blade.php

サイドバーをインクルードするビュー

home.blade.php

サービスプロバイダを作成

サービスプロバイダを実装

app/Providers/ComposerServiceProvider.php

サービスプロバイダを登録

app/config/app.php

動いた。

参考サイト

Views – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.2/views#view-composers

[PHP]Laravelのビューで@includeしているパーツに値を渡す(View Composers) | PHP Archive
http://php-archive.net/php/laravel-view-composers/