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を利用することができるようになります。
このように汎用的な変数やオブジェクトを利用する場合は、グローバルオブジェクトとして定義しておくと便利です。
このカテゴリの最新記事
2023.10.02
【Linux】よく使うLinuxコマンド一覧
2023.06.30
【Laravel】ページネーションの2ページ目以降にクエリパラメータを引き継がせる方法
2024.06.07
【Laravel】Docker環境でmigrationを実行するとcould not translate host nameエラーが発生する件について
2024.02.09
バッチファイルで一般権限で実行後、管理者権限でも動かす方法