◀ 43.

【Laravel】View::shareを用いて共通の値を各ビューに渡す方法

▶
この記事の要点
  • Laravel の View::share: 全 View で共通の値を渡せる機能
  • 実装: ServiceProvider の boot() で View::share('key', $value) を宣言
  • すべての Blade テンプレートから {{ $key }} で参照可能
  • 全画面に共通の値(サイト名等)に利用。ログイン状態に依存する値は取得タイミングに注意

 

Layoutで必ず取得しなければならない値をわざわざ一つずつのコントローラーで取得するのは冗長的である。

当問題はView::shareという機能を用いて解決することができる。

 

プロバイダーの作成

php artisan make:provider CommonServiceProvider

 

プロバイダーの登録

以下はconfig/app.phpのproviders配列へ登録する旧構成の例です。Laravel 13ではbootstrap/providers.phpを確認します。クラス名・ファイル名・登録名はCommonServiceProviderで統一してください。

'providers' => [

    ...

    App\Providers\CommonServiceProvider::class,

]

 

 

サービスプロバイダー

<?php

namespace App\Providers;

use App\Http\ViewComposers\CommonComposer;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class CommonServiceProvider extends ServiceProvider
{
    /**
     * コンテナ結合の登録
     *
     * @return void
     */
    public function
boot()
    {

         View::share('xxx', 'zzz');
    }
}

上記の設定で各ビューで $xxx が参照可能となる。

Laravel 13で共有値を設定する

独立したプロバイダーが必要なければ、既存のAppServiceProviderのbootメソッドに追加できます。registerメソッドではなくbootで設定します。ファイル全体を置き換えず、既存の処理を残して次の行を追加してください。

// app/Providers/AppServiceProvider.php
// Add the import and the statement to the existing class.
use Illuminate\Support\Facades\View;

public function boot(): void
{
    View::share('siteName', config('app.name'));
}

例えばresources/views/welcome.blade.phpに次の行を追加すると、共有したサイト名を確認できます。config/app.phpのname設定を取得する例なので、全ビューで同じ値を使います。

{{ $siteName }}

独立したプロバイダーを使う場合

先のmake:providerコマンドで生成したCommonServiceProviderを使う場合、Laravel 13ではbootstrap/providers.phpへ自動登録されます。手作業でクラスを作った場合は登録が必要です。登録済みのクラスを重複して追加せず、次の項目が配列にあるか確認してください。

App\Providers\CommonServiceProvider::class,

値が見えない・不要な処理が走るとき

  • 変数が未定義なら、プロバイダーが登録されているか、bootが実行されるか、View::shareのキーとBladeの変数名が一致しているか確認します。先のxxx/zzzの例では{{ $xxx }}を表示します。
  • 共有する値が特定のビューだけで必要なら、全体共有ではなくView Composerを検討します。View Composerは対象ビューの描画時に値を用意するための仕組みです。
  • ログインユーザーや権限など、リクエストごとに変わる情報をアプリ起動時の共通値と混同しないでください。セッション・認証処理の実行順を確認し、対象ビューで必要になった時点の値を渡します。
  • 重いDB取得をbootへ無条件に置かないでください。まず必要な画面と取得タイミングを絞り、キャッシュの追加とは別に設計を確認します。

仕様確認: Laravel 13公式: ビューへのデータ共有、プロバイダー登録(2026年10月確認)。

Post Share
子ページ

子ページはありません

同階層のページ
  1. インストールと設定
  2. クイックスタート & チュートリアル(初心者向け)
  3. クイックスタート & チュートリアル(中級者向け)
  4. ルーティング
  5. Bladeテンプレート(ビュー/レイアウト)
  6. コントローラー
  7. マイグレーションとテーブル定義
  8. データベースの設定
  9. Eloquentモデル (ORM)
  10. SQLとクエリビルダー
  11. バリデーション
  12. .envファイルの設定値へのアクセス
  13. 動作環境による分岐処理
  14. configフォルダ配下の設定値へのアクセス
  15. assetヘルパーを利用したpublicフォルダへのアクセス
  16. storageフォルダへのアクセス
  17. アプリケーション名の変更
  18. メンテナンス
  19. ログイン画面(認証システム)の作成
  20. ログインの必須化
  21. ログインユーザー情報の取得
  22. ルートの認証化
  23. 本番サーバーへのデプロイ方法
  24. 多言語化
  25. csrf_field
  26. ファイルのダウンロード
  27. CSVのアップロードおよび読み込み(maatwebsite/excel)
  28. ページタイトルの設定
  29. コマンド一覧
  30. エラー一覧
  31. SQLの実行ログ出力方法
  32. キャッシュのクリア
  33. Selectの結果の最初もしくは最後に任意の値を追加する方法
  34. ajaxでPOST通信する際の注意点
  35. ソーシャルログインの実装
  36. セッション情報の確認
  37. ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
  38. redirectやreturn viewにメッセージを付与する方法
  39. クッキー(cookie)の設定と取得
  40. クラスの再読み込み
  41. csrfの有効時間を変更する方法
  42. ViewComposerを用いてviewに共通の値を付与する方法
  43. View::shareを用いて共通の値を各ビューに渡す方法
  44. ミドルウェアを用いた処理の共通化
  45. Middleware内でAuth::check()などを使用する方法
  46. Controller以外でリダイレクトする方法
  47. セッションの値の取得/保存/更新/削除
  48. $requestの値を変更する方法
  49. 常時SSL化
  50. ページング(ページネーション)をする方法
  51. vue.jsとの連携
  52. Vue.jsと連携するSPA実行環境構築
  53. .envの値をvue.jsで参照する方法
  54. vue.jsを本番環境にリリースする方法
  55. could not find driver(Windows, MySQL編)