PHP/Elixirエンジニアのブログ

有益なアウトプットを心がけます。

【Laravel】ディレクティブ一覧

LaravelのBladeには「ディレクティブ」という機能があります。
これは言語における構文のような役割を果たします。
基本的に「@ディレクティブ名」という形で記述して
「@endディレクティブ名」で終了します。

@ifディレクティブ(条件分岐1)

条件分岐(if文)に相当するディレクティブです。
「@if」はその後に条件を設定します。
それ以降、〜@endifまでの部分を表示します。

■条件がtrueの時に表示する

@if (条件)
・・・・出力内容・・・・
@endif

■条件によって異なる表示をする

@if (条件)
・・・・出力内容・・・・
@else (条件)
・・・・出力内容・・・・
@endif

■複数の条件を設定する

@if (条件)
・・・・出力内容・・・・
@elseif (条件)
・・・・出力内容・・・・
@else (条件)
・・・・出力内容・・・・
@endif

「@if」には「@elseif」と「@else」という
ディレクティブがオプションで用意されています。
「@elseif」はいくつでも続けて表記できます。

@unlessディレクティブ(条件分岐2)

条件が非成立の時に表示するディレクティブです。
ということは、「@if」の逆の働きをします。
「@unless」は条件がfalseの場合に表示を行い、
trueの場合は表示をしません。

@unless (条件)
・・・・出力内容・・・・
@else 
・・・・出力内容・・・・
@endunless

@emptyディレクティブ(条件分岐3)

変数が空の場合に表示するディレクティブです。
「@empty」は()に指定した変数が空の時に表示を行います。
「@else」は、変数が空でない場合(変数が設定されてる)
場合に表示されます。

@empty (変数)
・・・・出力内容・・・・
@else 
・・・・出力内容・・・・
@endempty

@issetディレクティブ(条件分岐4)

変数が定義済みの場合に表示するディレクティブです。
「@isset」は()の変数が定義されてるか確認を行います。
変数が定義されていてnullでない場合に表示を行います。
「@else」は変数が未定義であった場合に表示されます。

@isset (変数)
・・・・出力内容・・・・
@else 
・・・・出力内容・・・・
@endisset

@for ディレクティブ(繰り返し1)

PHPの「for構文」に相当するディレクティブです。
「for構文」と同様に、
()内に初期化処理、繰り返し条件、繰り返しの後の
3つの処理を用意します。

@for (初期化 ; 条件 ; 後処理)
・・・・繰り返す表示・・・・
@endfor

@foreach ディレクティブ(繰り返し2)

PHPの「foreach構文」に相当するディレクティブです。
()内に配列、変数を用意します。
配列から変数へ値を取り出す処理を繰り返していきます。

@foreach ($配列 as $変数)
・・・・繰り返す表示・・・・
@endforeach

@forelse ディレクティブ(繰り返し3)

PHPの「foreach構文」に「else」を追加した場合の処理
相当するディレクティブです。
()の配列から値を全て取り出し終えて取り出せなくなった時に
「@empty」にある処理を実行し繰り返しを終えます。

@forelse ($配列 as $変数)
・・・・繰り返す表示・・・・
@empty
・・・・$変数が空の時に表示・・・・
@endforelse

@while ディレクティブ(繰り返し4)

PHPの「while構文」に相当するディレクティブです。
引数に条件を設定して、trueの場合に表示します。

@while (条件)
・・・・繰り返す処理・・・・
@endwhile

ただし、実行に使っている変数などの値が変化しなければ
無限ループとなってしまうため
ディレクティブ内で何らかの処理を設定する必要があります。

@breakと@continue

@breakは出力されると繰り返しの処理が中断されます。
@continueは繰り返し処理をスキップすることができます。

@phpディレクティブ

Blade内でphpスクリプトを直接実行できるディレクティブです。

@php(条件)
・・・・phpのスクリプト・・・・
@endphp