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を利用することができるようになります。
このように汎用的な変数やオブジェクトを利用する場合は、グローバルオブジェクトとして定義しておくと便利です。
このカテゴリの最新記事
2023.11.09
【Laravel】改行コード(\n)を認識しながらHTMLタグは文字列としてサニタイズしたい場合の方法
2024.11.22
Visual Studioならたった1秒でメソッドの抽出ができる!
2025.04.03
ランディングページのABテストを無料でおこなう方法を紹介【Laravel】
2023.09.11
【Certbot】CentOS7+Apache2.4にLet’s Encryptで証明書発行