タイガーラック クリエイティブブログ
2024
September
05

【Laravel】共通オブジェクトをbladeファイルで利用する方法

Laravelのテンプレートエンジンbladeで変数やオブジェクトを利用する場合、まずコントローラで変数(オブジェクト)を定義し、bladeファイルに渡す必要があります。

<?php

$Account = Account::find(Auth::user()->id);
return view('top', compact('Account'));

ただ、どのページでも共通で使うような変数(オブジェクト)を都度コントローラで定義するのは面倒だと思います。

そこで、今回は共通変数をグローバルに定義し、すべてのbladeファイルで使用できるようにする方法を紹介します。

AppServiceProviderに変数を定義する

/app/Providers/AppServiceProvider.php というファイルがあるので、これを編集します。

boot内に、Viewファサードのcomposerメソッドを使って以下のようなコードを書きます。

<?php
+ use Illuminate\Support\Facades\View;


class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {

+        View::composer('*', function ($view) {
+            if (Auth::user()) {
+                $Account = Account::find(Auth::user()->id);
+                if ($Account) {
+                    $view->with('Account', $Account);
+                }
+            }
+        }

    }
}

今回は、ユーザーがログイン状態の場合、ログイン中のAccountオブジェクトを取得してビューに渡す処理を書きました。
コントローラに何も書かずとも、これですべてのbladeファイルで $Accountを利用することができるようになります。

このように汎用的な変数やオブジェクトを利用する場合は、グローバルオブジェクトとして定義しておくと便利です。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.