役立つ情報
登録日: 2025-03-09   最終更新日: 2025-03-19

Laravel で全ページ共通データをフロント側に渡す方法

Laravel で全ページに共通データをフロントエンドへ渡す方法を紹介します。

ビューコンポーザー (View Composer) の作成

特定のビューがレンダリングされる際に、データを自動的に渡すことができます。

設定手順

app\Http\ViewComposers\ExampleComposer.php を追加する。


<?php

namespace App\Http\ViewComposers;

use Illuminate\View\View;

/**
 * Class ExampleComposer
 * @package App\Http\ViewComposers
 */
class ExampleComposer
{    
    /**
     * Bind data to the view.
     * @param View $view
     * @return void
     */
    public function compose(View $view)
    {
        $view->with([
            'globalDataA' => 'example',
        ]);
    }
}

サービスプロバイダファイルの作成

以下のコマンドを実行し、サービスプロバイダファイルを作成します。


php artisan make:provider ViewComposerServiceProvider

app\Providers\ViewComposerServiceProvider.php


<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use View;

class ViewComposerServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap services.
     */
    public function boot(): void
    {
        View::composers([
            // 全てのviewに共通データを渡す。
            \App\Http\ViewComposers\ExampleComposer::class => '*', 

            // 例:resources\views\example\index.blade.phpに返したい場合
            // \App\Http\ViewComposers\ExampleComposer::class => 'example.index',

            // 例:resources\views\example\配下の全てのviewに返したい場合
            // \App\Http\ViewComposers\ExampleComposer::class => 'example.*', 
        ]);
    }
}

app.php へ SeriviceProvider の登録

app.php に作成した、サービスプロバイダを追加します。


'providers' => ServiceProvider::defaultProviders()->merge([
    …(略)
    // View Composer
    App\Providers\ViewComposerServiceProvider::class,

フロントで共通データを表示


<div>
    <h6>{{ $globalDataA }}</h6>
</div>

※ @include するファイルでも取得可能です。


Copyright 役立つ情報.net