PHPフレームワークの中でも高い人気を誇る「Laravel」。その中核を担う機能のひとつが、テンプレートエンジンである「Blade(ブレード)」です。
Bladeを使うことで、HTMLにPHPを組み込んだ従来の書き方よりも、可読性・保守性に優れたビュー開発が可能になります。
この記事では、Laravel初心者にもわかりやすく、Bladeテンプレートの基本を解説します。
[目次を開く]
Bladeテンプレートとは?
Bladeは、Laravelに標準搭載されている軽量かつパワフルなテンプレートエンジンです。
HTMLに直接PHPを書くのではなく、Blade独自のディレクティブ(命令)構文を使うことで、見やすく効率的な記述が可能です。
例えば以下のように、{{ }}
で変数を出力し、@if
や @foreach
で制御構文を記述できます。
<h1>こんにちは、{{ $name }}さん</h1>
@if($isAdmin)
<p>管理者ページへようこそ!</p>
@endif
Bladeテンプレートの基本構文
1. 変数の出力
Bladeでは、{{ $変数名 }}
の形式で変数を簡単に表示できます。
HTMLエスケープも自動で行ってくれるため、セキュリティ面でも安心です。
<p>{{ $user->name }}</p>
エスケープしない生のHTMLを表示したい場合は、以下のように記述します。
{!! $content !!}
2. 条件分岐
@if
, @elseif
, @else
, @endif
を使って、テンプレート内で条件分岐ができます。
@if($user->isAdmin())
<p>管理者です</p>
@else
<p>一般ユーザーです</p>
@endif
3. ループ処理
@foreach
, @for
, @while
などのディレクティブを使って繰り返し処理も可能です。
<ul>
@foreach($items as $item)
<li>{{ $item }}</li>
@endforeach
</ul>
4. テンプレートの継承
Bladeの強力な機能のひとつが「レイアウトの継承」です。
共通レイアウト(layouts/app.blade.php
など)を作成し、各ページでそれを継承することで、DRY(Don't Repeat Yourself)な開発が可能になります。
共通レイアウト:
<!-- layouts/app.blade.php -->
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@yield('content')
</body>
</html>
子テンプレート:
<!-- views/home.blade.php -->
@extends('layouts.app')
@section('title', 'ホーム')
@section('content')
<h1>ようこそホームページへ!</h1>
@endsection
その他便利な機能
-
@include
:部分テンプレートの読み込み -
@csrf
:CSRFトークンの埋め込み -
@auth
/@guest
:ログイン状態に応じた表示制御 - コンポーネント:再利用可能なUI部品をBladeで構築可能
まとめ
BladeはLaravelのビュー開発を強力にサポートしてくれるテンプレートエンジンです。
可読性に優れ、保守性も高いため、チーム開発や中規模以上のWebアプリケーションにおいては特に効果を発揮します。
今後のLaravel開発では、Bladeの理解が生産性を大きく左右します。まずは基本の構文をマスターし、少しずつ応用的な使い方にもチャレンジしてみてください。