Bladeの基本 — 変数表示と制御構文
Laravelの画面づくりに使う「Blade」とは何かをやさしく説明し、変数の表示・条件分岐・繰り返しの書き方を学びます。
前の章では、コントローラから view() で画面を返しました。その画面(ビュー)を作るために Laravel が用意しているのが Blade(ブレード) です。この単元では、Blade とは何か、そして一番よく使う「変数の表示」「条件分岐」「繰り返し」を学びます。
MVC の V(ビュー=見た目の担当) にあたる部分です。
Blade とは
Blade はテンプレートエンジンです。…と言われてもピンと来ないと思うので、かみ砕きます。
Webの画面は HTML で作りますが、HTML だけでは「データベースから取ってきた名前を表示する」「ログインしている人だけにボタンを見せる」といった動きのある表示ができません。
そこで、HTML の中に「ここに名前を入れて」「ここは条件によって出し分けて」といった指示を埋め込めるようにしたものが Blade です。ファイルは resources/views/ に 名前.blade.php という形で置きます。
変数を表示する:{{ }}
コントローラから渡された変数は、{{ }}(二重の波かっこ)で囲むと画面に表示できます。
<p>こんにちは、{{ $name }} さん</p>
$name が「田中」なら、画面には「こんにちは、田中 さん」と表示されます。
{{ }} は安全に表示してくれる
{{ }} は、表示する内容を**自動で無害化(エスケープ)**します。これは、悪意のあるコードが画面に紛れ込んでも、ただの文字として表示してくれる安全機能です。初心者のうちは、変数の表示は必ず {{ }} を使うと覚えておけば大丈夫です。
条件分岐:@if
「ある条件のときだけ表示する」には @if を使います。@ で始まるこうした命令を ディレクティブ と呼びます(Blade専用の命令、というイメージです)。
@if ($score >= 80)
<p>合格です!</p>
@elseif ($score >= 60)
<p>もう少しです</p>
@else
<p>復習しましょう</p>
@endif
@if で始めたら、必ず @endif で閉じます。これがセットです。
繰り返し:@foreach
一覧表示など「同じ形を、データの数だけ繰り返したい」ときは @foreach を使います。
<ul>
@foreach ($users as $user)
<li>{{ $user }}</li>
@endforeach
</ul>
$users が ['田中', '佐藤', '鈴木'] なら、<li> が3つ並びます。こちらも @foreach … @endforeach がセットです。
データが空のときも考える:@forelse
もしデータが1件もなかったら、繰り返しても何も表示されません。「空のときの表示」も一緒に書けるのが @forelse です。
@forelse ($users as $user)
<li>{{ $user }}</li>
@empty
<li>ユーザーがいません</li>
@endforelse
まとめ
- Blade は、HTML に「変数の表示」や「条件・繰り返し」を埋め込めるテンプレートエンジン。ビュー(V)を作る道具。
- 変数の表示は
{{ $変数 }}。自動でエスケープされ安全。 - 条件分岐は
@if … @endif、繰り返しは@foreach … @endforeach。@で始まる命令をディレクティブと呼ぶ。 - データが空のときは
@forelse … @empty … @endforelseが便利。 - 次の単元では、ヘッダーやフッターなど共通部分をまとめる方法を学びます。