基本の部分(Laravel)

LaravelのBladeで使えるディレクティブをまとめました

Bladeとは

Laravelのview作成にはHTMLではなくBladeが使用されます。ベースとなる書き方はHTMLですが、加えてBlade固有の色々な機能を使用することができます。

公式ドキュメントから下記引用

BladeはシンプルながらパワフルなLaravelのテンプレートエンジンです。他の人気のあるPHPテンプレートエンジンとは異なり、ビューの中にPHPを直接記述することを許しています。全BladeビューはPHPへコンパイルされ、変更があるまでキャッシュされます。つまりアプリケーションのオーバーヘッドは基本的に0です。Bladeビューには.blade.phpファイル拡張子を付け、通常はresources/viewsディレクトリの中に設置します。

つまり、テンプレート側にPHPを直接記述することができるLaravel独自の便利な機能ということですね。

(PHPで有名なのは、古いですがSmartyなどが挙げられるでしょう。)

ディレクティブとは

ディレクティブとは、Bladeで使用することができる、@から始まる範囲内で特定の処理を実行することができる記述方法です。

ディレクティブの利点は動的な部分のコードを比較的少ないコードで記述が可能となることです。

レイアウト作成用ディレクティブ

@section

@sectionの第一引数に文字列やHTMLタグを定義できます。

呼び出すときは@yieldディレクティブを使用できます。

@yield

@sectionディレクティブで定義した内容を展開します。

第二引数を付けると、埋め込み対象のsectionが未定義の場合に描画されます。

@extends

継承する親レイアウトを子ビューに定義できます。

@component

コンポーネントの組み込みを行います。

@slot

{{}}の間に指定された変数に値を設定します。

※slotの詳しい動きについては端折り、書き方メインで書きています。

動きについて詳しく知りたい方はこちら

@include

読み込みたいbladeファイルを呼び出すことができます。

第二引数にbladeに渡したい値を配列で書くことも可能です。

@each

配列などから値を取り出し指定のテンプレートにはめ込んで出力することができます。

分岐処理を行うディレクティブ

@if

if文が記述できます。

@unless

if文と逆の動きを行います。

@empty

値が空か比較します。

@isset

値が存在するか比較します。

繰り返し処理を行うディレクティブ

@foreach

foreach文が記述できます。

@for

for文が記述できます。

@while

while文が記述できます。

繰り返しのディレクティブに用意されている変数 $loop

bladeでは、$loopという繰り返し処理で使用できる特殊な変数が存在します。

「$loop->取り出したい値」とアクセスすることで、さま座ななプロパティにアクセスすることが可能となります。

ループ変数 役割
$loop->index 現在のインデックス(0~)
$loop->interation 現在の繰り返し数(1~)
$loop->remaining 後何回繰り返すのか
$loop->count 繰り返しで使っている配列の要素数
$loop->first 最初の繰り返しかどうか
$loop->last 最後の繰り返しかどうか
$loop->depth 繰り返しのネスト数
$loop->parent ネストしている場合、親の繰り返しループ変数を示す

その他のディレクティブ

@php

phpコードを直接記述することが可能です。

@dd

laravelのddヘルパと同じです。

デバッグ時に使用します。

@dump

laravelのdumpヘルパと同じです。

デバック時に使用します。

これからLaravelを始めるならこれが最適!!


今までLaravelに関しての良書はほとんどなく、あっても内容が古かったり分かりにくいのばかりで、先駆者達は苦労したのではないでしょうか?

そんな中で発売されたこの本は、現在の日本国内にて唯一のLaravelの良書と言い切っても良いかと思います。PHP中級者以上なら苦労することなく読めるでしょう。Laravelは高機能ゆえ、全機能を説明してはいませんが、この本をとっかかりにすれば自ずとLaravelをマスターすることができると思います。