laravel5.1で、サイドバーにMySQLのレコード(カテゴリーなど)を常に表示するには、view composer(サービスプロバイダ)を使えば良い。

laravel5.1で、サイドバーにMySQLのレコード(カテゴリーなど)を常に表示するには、view composer(サービスプロバイダ)を使えば良い。

a, 従来のやり方

上記でも、サイドバーにカテゴリーのリストは表示されるけど、各コントローラーで必ずcategories変数を渡す必要があって、面倒くさい。

b, view composer(サービスプロバイダ)を使う

1, サービスプロバイダとは、laravelで機能を提供するための仕組みです(関数やライブラリのように処理をまとめたもの)

laravel5.1のサービスプロバイダについて調べてみた(カスタムバリデーターをサービスプロバイダで実装しようとしたけど、上手くいかなかったのでデフォルトのapp/Providers/AppServiceProvider.phpに記述した)

2, View Composerとは、特定のbladeファイルを描写(レンダリング)する時に、特定の処理を実行する仕組み(まさに今回のパターン!)

つまり、View Composerの機能をlaravelで使えるようにするは、サービスプロバイダ上で実装する必要がある。

3, まず、サービスプロバイダのファイルを作る(ViewComposerという名前のプロバイダ名。名前はなんでもいい)

4, app\Providers\ViewComposerServiceProvider.phpが生成されるので、boot関数にbladeファイルと処理を書く

5, config\app.phpのproviders[]の最後に追加する

6, viewに変数を渡さなくても、カテゴリーを表示される事を確認する。