LoginSignup
7
8

More than 3 years have passed since last update.

【Laravel】ビューコンポーザーの使い方

Posted at

ビューコンポーザーとは

ビューをレンダリングする際に自動的に実行される処理を用意するための部品です。
ビューがレンダーされるたびに結合したい情報があるなら、ビューコンポーザがロジックを一箇所にまとめるのに役立ちます。

サービスプロバイダについて

ビューコンポーザーを利用するためにサービスプロバイダを使う必要があります。
サービスプロバイダの使い方についてはこちらから

実装する機能

今回はビューコンポーザーで設定した文字列をビューファイルで表示します。

どうやって実装するのか

登録済みのサービスプロバイダから指定したビューをレンダリングする時にビューコンポーザーを呼び出します。

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

ターミナルからサービスプロバイダを作成します。

ターミナル
php artisan make:provider MessageServiceProvider

MessageServiceProviderを作成します。

サービスプロバイダの登録

上記で作成したMessageServiceProviderをアプリケーションに登録しましょう

config/app.php
'providers' => [
    // 他のサービスプロバイダ

    App\Providers\MessageServiceProvider::class,
],

config/app.phpproviders配列に上記を追記してください

サービスプロバイダの編集

上記で作成したサービスプロバイダを編集しましょう

app/Providers/MessageServiceProvider
<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class MessageServiceProvider extends ServiceProvider
{
    public function boot()
    {
        View::composer(
            'welcome', 'App\Http\Composers\MessageComposer'
        );
    }

    public function register()
    {
        //
    }
}
View::composer('welcome', 'App\Http\Composers\MessageComposer');

ビューコンポーザーの設定です。
welcomeをレンダリングした時にApp\Http\Composers\MessageComposerが呼び出されます

ビューコンポーザーの編集

app/Http/Composersフォルダを作ってください

app/Http/Composers/MessageComposer
<?php

namespace App\Http\Composers;

use Illuminate\View\View;

class MessageComposer
{
    public function compose(View $view)
    {
        $view->with('message', 'View Composer message!!');
    }
}
$view->with('message', 'View Composer message!!');

message'View Composer message!!'を代入してレンダリングします

ビューファイルの追記

resources/views/welcome.blade.phpに下記を追記してください。

resources/views/welcome.blade.php
{{ $message }}

welcomeにアクセスした時ににView Composer message!!が表示されれば設定完了です。

参考記事

疑問、気になるところがございましたら、質問、コメントよろしくお願いします!!!

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8