Documentation Index
Fetch the complete documentation index at: https://kawax.biz/llms.txt
Use this file to discover all available pages before exploring further.
はじめに
BladeはLaravelに含まれるシンプルかつ強力なテンプレートエンジンです。 PHPのテンプレートエンジンの一部と異なり、Bladeはテンプレート内で素のPHPコードの使用を制限しません。 すべてのBladeテンプレートはPHPコードにコンパイルされてキャッシュされるため、Bladeはアプリケーションにほとんどオーバーヘッドを加えません。 Bladeテンプレートファイルは.blade.php 拡張子を使い、通常は resources/views ディレクトリに格納されます。
Bladeコンパイルフロー
.blade.php ファイルがどのようにHTMLレスポンスに変換されるかを示します。一度コンパイルされたファイルはキャッシュされるため、同一テンプレートの2回目以降のリクエストはコンパイルをスキップします。
データの表示
Bladeビューに渡されたデータを表示するには、変数を二重の波括弧で囲みます。Bladeの
{{ }} は自動的にPHPの htmlspecialchars 関数を通してXSS攻撃を防ぎます。エスケープしないデータの表示
エスケープを省略したい場合は{!! !!} 構文を使います。
JavaScriptフレームワークとの共存
JavaScriptフレームワークも波括弧を使う場合は、@ シンボルでBladeのレンダリングをスキップさせます。
@ はBladeによって除去されますが、{{ name }} はそのままブラウザに送られてJavaScriptフレームワークによってレンダリングされます。
Bladeを中心に進めるか、LivewireやInertiaへ広げるかを比較したい場合は フロントエンド を参照してください。
Bladeディレクティブ
条件分岐(if文)
@unless で「〜でなければ」という条件も書けます。
@isset と @empty を使います。
認証ディレクティブ
Switch文
ループ
Bladeはループを扱うための便利なディレクティブを提供します。@break と @continue を使ってループを制御できます。
ループ変数
@foreach ループ内では、$loop 変数を使ってループに関する情報を取得できます。
| プロパティ | 説明 |
|---|---|
$loop->index | 現在のループインデックス(0始まり) |
$loop->iteration | 現在のループ反復回数(1始まり) |
$loop->remaining | 残りの反復回数 |
$loop->count | 配列の要素数 |
$loop->first | 最初の繰り返しか |
$loop->last | 最後の繰り返しか |
$loop->even | 偶数番目の繰り返しか |
$loop->odd | 奇数番目の繰り返しか |
$loop->depth | 現在のループのネスト深度 |
$loop->parent | ネストしたループの場合、親ループの変数 |
コメント
Bladeコメントはレンダリングされたページに含まれません。レイアウト
コンポーネントを使ったレイアウト
Laravelのレイアウト構築には、Bladeコンポーネントを使う方法が推奨されます。 まずレイアウトコンポーネントを作成します。テンプレート継承を使ったレイアウト
古典的な方法として、@extends・@section・@yield を使ったテンプレート継承があります。
親レイアウトの定義:
@parent を使うと、親レイアウトの @section の内容を維持しながら追記できます。サブビューのインクルード
@include ディレクティブを使うと、Bladeビューを別のビューに埋め込めます。
親ビューで利用可能なすべての変数は、インクルードされたビューでも利用できます。
フォームのCSRF保護
web ルートファイルで POST・PUT・PATCH・DELETE リクエストを送るHTMLフォームには、必ず @csrf ディレクティブを含めてください。
PUT・PATCH・DELETE リクエストをフォームから送る場合は @method ディレクティブを使います。
Origin検証や
X-CSRF-TOKEN / X-XSRF-TOKEN ヘッダーを含む実運用のCSRF対策は CSRFプロテクション を参照してください。まとめ
Bladeテンプレートエンジンの主な機能をまとめます。データの表示
データの表示
{{ $variable }} でエスケープ付き表示、{!! $variable !!} でエスケープなし表示。条件分岐
条件分岐
@if・@elseif・@else・@endif、@unless、@isset、@empty、@auth、@guest。ループ
ループ
@for・@foreach・@forelse・@while と $loop 変数を使った制御。レイアウト
レイアウト
コンポーネントベース(
<x-layout> と {{ $slot }})またはテンプレート継承(@extends・@section・@yield)。サブビュー
サブビュー
@include でビューを再利用可能なパーツとして埋め込み。