ビューコンポーザーとは
ビューをレンダリングする際に自動的に実行される処理を用意するための部品です。
ビューがレンダーされるたびに結合したい情報があるなら、ビューコンポーザがロジックを一箇所にまとめるのに役立ちます。
サービスプロバイダについて
ビューコンポーザーを利用するためにサービスプロバイダを使う必要があります。
サービスプロバイダの使い方についてはこちらから
実装する機能
今回はビューコンポーザーで設定した文字列をビューファイルで表示します。
どうやって実装するのか
登録済みのサービスプロバイダから指定したビューをレンダリングする時にビューコンポーザーを呼び出します。
サービスプロバイダの作成
ターミナルからサービスプロバイダを作成します。
php artisan make:provider MessageServiceProvider
MessageServiceProvider
を作成します。
サービスプロバイダの登録
上記で作成したMessageServiceProvider
をアプリケーションに登録しましょう
'providers' => [
// 他のサービスプロバイダ
App\Providers\MessageServiceProvider::class,
],
config/app.php
のproviders
配列に上記を追記してください
サービスプロバイダの編集
上記で作成したサービスプロバイダを編集しましょう
<?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
フォルダを作ってください
<?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
に下記を追記してください。
{{ $message }}
welcomeにアクセスした時ににView Composer message!!が表示されれば設定完了です。
参考記事
疑問、気になるところがございましたら、質問、コメントよろしくお願いします!!!