2024
October
17
【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.09.26
情報セキュリティの学び直し – パスワード編
2024.08.29
ChatGPT APIとC#(またはPython)を活用したAIメール応答システムの構築方法
2024.07.23
【Linux】dumpコマンドによるCentOSのバックアップ・リストア方法
2024.05.30
【Linux】NFSサーバーの設定方法