2024
July
29
【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を利用することができるようになります。
このように汎用的な変数やオブジェクトを利用する場合は、グローバルオブジェクトとして定義しておくと便利です。
このカテゴリの最新記事
2024.12.19
名刺を画像から読み取り、ChatGPTで解析するシステムの構築 その2 -AWSとGCPの使い方も紹介
2024.02.14
【Laravel】MiddlewareでBasic認証をかける
2025.01.31
C# LINQ:パフォーマンスと可読性を向上させる5つの重要トピック
2023.09.22
PostgresSQLでカンマ区切りのデータを個別にカウントする方法