例えば、ヘッダーやフッターなどレイアウトの共通部分で、ユーザーのプロフィール画像を表示したいとします。
コントローラーから渡すのであれば、
php
1public function index() { 2 View::share('image_url', Auth::user()->image_url); 3 // ... 4}
のような形で渡すかと思います。
共通の変数としてどこか 1 つの箇所にまとめようとした時、 Laravel ではどこにまとめるのが良いのでしょうか?
以下、私が考えたことになります。
=====================
案1.ベースクラスである Controller に定義して、各 Controller に継承させる。
案2.ServiceProvider に定義する
php
1class AppServiceProvider extends ServiceProvider 2{ 3 // ... 4 public function boot() 5 { 6 View::share('image_url', Auth::user()->image_url); 7 } 8 // ... 9}
案3.ViewComposer にて渡す
いくつかの記事を拝見すると、 ViewComposer にまとめると良いと書いてありました。
https://readouble.com/laravel/8.x/ja/views.html
気になったのは、これを全ビュー指定で呼ぶようにすると、ヘッダーやフッターを部分テンプレートとして分けた場合、その都度コールされているように見えます。
php
1View::composer('*', function ($view) { 2 // 3});
もし ViewComposer を使用する場合は、最低限の blade だけ指定し、部分パーツに分けている場合は、変数を渡してあげる、という使用方法になるのでしょうか?
=====================
ご意見いただけますと幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/13 08:56