目次
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ファイル作成
<html>
<head>
<title>sample</title>
</head>
<body>
{{$key}}
</body>
</html>
描画前処理の作成
(1) /sample/app/Http/ViewComposersフォルダ作成
(2) /sample/app/Http/ViewComposers/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ファイル作成
<?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配列に下記を追記
‥‥
'providers' => [
‥‥
App\Providers\ViewComposerServiceProvider::class,
],
‥‥
これでレンダリングの際に
ViewComposerServiceProvider#boot→View::composer→SampleComposer#compose
が実行されます
動作確認
http://localhost/laravelSample/sample/view-compose
実行結果
123,456,789.12