L

Bladeの基本 — 変数表示と制御構文

Laravelの画面づくりに使う「Blade」とは何かをやさしく説明し、変数の表示・条件分岐・繰り返しの書き方を学びます。

広告枠(記事上)— 本番では AdSense 広告が表示されます

前の章では、コントローラから 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 が便利。
  • 次の単元では、ヘッダーやフッターなど共通部分をまとめる方法を学びます。
広告枠(記事下)— 本番では AdSense 広告が表示されます