1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelでビュー描画前処理を行う

Last updated at Posted at 2020-04-30

目次

Laravelの記事一覧は下記
PHPフレームワークLaravelの使い方

Laravelバージョン

動作確認はLaravel Framework 7.19.1で行っています

Laravelのビュー描画前処理

Laravelのビュー描画前処理について書いていきます
Laravelではビューが描画される時に呼び出される処理を作成しておくことができます

前提条件

eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

Controllerにメソッド追加

(1) /sample/app/Http/Controllers/SampleController.phpにviewComposeメソッドを追記
public function viewCompose() { $data = ['key' => 123456789.123456]; return view('sample.viewCompose', $data); }

(2) /sample/routes/web.phpに下記を追記
Route::get('sample/view-compose', 'SampleController@viewCompose');

viewの作成

/sample/resources/views/sample/viewCompose.blade.phpファイル作成

viewCompose.blade.php
<html>
    <head>
        <title>sample</title>
    </head>
    <body>
        {{$key}}
    </body>
</html>

描画前処理の作成

(1) /sample/app/Http/ViewComposersフォルダ作成
(2) /sample/app/Http/ViewComposers/SampleComposer.phpファイル作成

SampleComposer.php
<?php

namespace App\Http\ViewComposers;

use Illuminate\View\View;

class SampleComposer {

    public function compose(View $view)
    {
        $view->with('key', number_format($view->getData()['key'], 2, '.', ','));
    }
}

描画前処理が呼び出されるように登録する

(1) /sample/app/Providers/ViewComposerServiceProvider.phpファイル作成

ViewComposerServiceProvider.php
<?php
namespace App\Providers;

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

class ViewComposerServiceProvider extends ServiceProvider{

    public function boot()
    {
        View::composer(
            'sample.viewCompose', 'App\Http\ViewComposers\SampleComposer'
        );

    }

    public function register()
    {
    }
}

(2) /sample/config/app.php内のproviders配列に下記を追記

ViewComposerServiceProvider.php

‥‥

'providers' => [

‥‥

App\Providers\ViewComposerServiceProvider::class,
],

‥‥

これでレンダリングの際に
ViewComposerServiceProvider#boot→View::composer→SampleComposer#compose
が実行されます

動作確認

http://localhost/laravelSample/sample/view-compose

実行結果

123,456,789.12
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?