5.
Blade
Bladeとは
テンプレートエンジン
テンプレートエンジンとは、プログラム処理したデータをView(ビュー)と結合して表示する仕組みです。View
は HTMLやテキストなどを指します。

テンプレートエンジンのメリット
テンプレートエンジンを利用するメリットは、データ処理とViewを分離することで、プログラムを管理しやすく効率化できることにあります。
PHPのテンプレートエンジン
PHPのテンプレートエンジンには、Smarty
, Twig
, Blade
などがあります。
Bladeテンプレートエンジン
Bladeファイル
Blade(ブレード) は、Laravel標準搭載のテンプレートエンジンです。テンプレート(View)ファイルはBladeファイルといい、拡張子は .blade.php
です。
管理フォルダ
Bladeファイルの管理フォルダはresouces/views/
で、この中にフォルダやBlade
ファイルを配置します。

Bladeファイル作成
make:view
コマンドでBladeファイルを作成できます。ファイルパスは、拡張子 .blade.php
を除いたファイル名で指定します。フォルダは .
で区切るルールになっています。
ターミナル
php artisan make:view フォルダ.ファイル名
レンダリング
view()
プログラムでViewを表示することをレンダリングといいます。Bladeファイルのレンダリングは、view()
を利用します。
view(Bladeファイルのパス)
return で返す
view()
を返すと、Bladeファイルがレンダリングされます。
以下は、resouces/views/home/index.blade.php
をレンダリングします。
Route::get('/', function () {
return view("home.index");
}
トップページのBlade
ファイル構成
/
├── home/
│ ├── index.blade.php
│ └── about.blade.php
├── product/
│ ├── show.blade.php
│ └── search.blade.php
トップページ
プロジェクト作成時に、トップページのルーティングとBladeファイルが自動作成されています。

Bladeファイル
このトップページのViewファイルは、「resouces/views/welcome.blade.php」です。
トップページのルーティング
GETリクエスト / にルーティングすると、「welcome.blade.php」をレンダリングしています。
web.php
Route::get('/', function () {
return view('welcome');
});
makeコマンド
テンプレートファイル作成
artisan
のmake
コマンドで、いろいろなテンプレートファイルを自動作成できます。
ターミナル
php artisan make:オプション ファイル名
主なオプション
make
コマンドの代表的なオプションです。
コマンド例 | 主な役割 |
---|---|
controller |
コントローラーファイルの作成。ビジネスロジックはできるだけModelやServiceに分離するとよい |
model |
データベースのテーブルと対応するクラス。Eloquent ORMを通じてレコードの取得・保存・更新・削除を担当 |
migration |
データベースの定義ファイル作成や、マイグレートの |
request |
フォームやAPIリクエストのバリデーションや権限チェックを集中管理するクラス |
seeder |
初期データやテストデータをDBに投入するためのクラス。php artisan db:seed で実行 |
View作成
ルーティングとビュー
ページ | ルーティング | ビュー |
---|---|---|
トップ | / | resouces/views/home/index.blade.php |
About | /about | resouces/views/home/about.blade.php |
商品トップ | /product | resouces/views/product/index.blade.php |
検索 | /search | resouces/views/product/search.blade.php |
トップページ
Bladeファイル作成
make:view
コマンドで home/index.blade.php
ファイルを作成します。
php artisan make:view home.index
resouces/views/home/index.blade.php
が作成されます。

BladeファイルにHTMLを記述します。
resources/views/home/index.blade.php
<div>
<h1>Home</h1>
</div>
ビューレンダリング
ルーティング /
に対してresouces/views/home/index.blade.php
をレンダリングします。
routes/web.php
Route::get('/', function() {
return view('home.index');
});
動作確認
http://localhost:8000/ にアクセスして、HTMLが表示できるか確認してみましょう。

Aboutページ
make:view
コマンドで home/about.blade.php
ファイルを作成します。
ターミナル
php artisan make:view home.about
resouces/views/home/about.blade.php
が作成されます。

BladeファイルにHTMLを記述します。
resouces/views/home/about.blade.php
<div>
<h1 class="text-xl font-bold mb-4">About</h1>
<p>これはアバウトページです。</p>
</div>
ビューレンダリング
ルーティング /about
に対して resouces/views/home/about.blade.php
をレンダリングします。
routes/web.php
Route::get('/', function() {
return view('home.about');
});
動作確認
http://localhost:8000/about/ にアクセスして、HTMLが表示できるか確認してみましょう。

Productページ
make:view
コマンドで product/index.blade.php
ファイルを作成します。
php artisan make:view product.index
resources/views/product/index.blade.php
<div>
<h1>Product</h1>
</div>
ビューレンダリング
ルーティング /product
に対して resouces/views/product/index.blade.php
をレンダリングします。
routes/web.php
Route::get('/product', function() {
return view('product.index');
});
動作確認
http://localhost:8000/product/ にアクセスして、HTMLが表示できるか確認してみましょう。

データバインディング
データバインディングの基本
view()
の第2引数にデータを代入すると、Viewにデータをバインディングできます。
view(Bladeファイルのパス, データ);
連想配列のバインド
/product/serach
のルーティングで、Viewにデータバインディングします。
キー | 値 |
---|---|
keyword | $request->keyword |
routes/web.php
Route::get('/product/search', function (Request $request) {
$data = [
'keyword' => $request->keyword,
];
return view('product.search', $data);
});
Bladeファイル作成
make:view
コマンドで product/search.blade.php
ファイルを作成します。
php artisan make:view product.search
データの表示
{{ }}
は、Bladeでデータを出力するための構文です。内部的にはHTMLエンティティエンコーディングが実行されます。
{{ 変数 }}
Bladeでデータ表示
product/search.blade.php
にバインドしたデータ $keyword
を表示します。
resources/views/product/search.blade.php
<div>
<h2>検索キーワード</h2>
<p>{{ $keyword }}</p>
</div>
- 連想配列のキーが変数名になる
クエリパラメータkeyword
を指定して、ブラウザでデータ確認してみましょう。
結果
http://localhost:8000/search?keyword=東京
