Laravel Bladeで基本の制御文(分岐、繰り返し)if, switch, unless, for, while, foreach, forelse

こんにちは。今回はLaravelに標準搭載されているテンプレートエンジンのBladeの制御文をまとめて解説します。基礎をおさらいしたい方向けの情報となっています。

分岐条件

if

@ifディレクティブを使うと条件分岐ができます。

@if($hasError)
    エラーが存在します。
@endif

switch

switchを使用すると変数の値に対し複数の分岐を記述できます。

    @switch($status)
    @case(1)
        作成中
        @break

    @case(2)
        完成
        @break

    @default
        デフォルトケース
@endswitch

unless

条件がfalseの場合にディレクティブ内を処理するunlessも存在します。

@unless ($isSignedIn)
    サインインしていません。
@endunless

繰り返し(ループ処理)

for

指定の回数処理を繰り返す場合はfor文を使います。

@for ($counter = 0; $counter < 10; $counter++)
    現在の値は {{ $counter }} </br>
@endfor 

while

指定した条件がtrueの間はループし続けます。

    @php
        $counter = 0;
    @endphp

    @while ($counter < 10)
        <p>現在の値は {{ $counter }}</p>

        @php
            $counter++;
        @endphp
    @endwhile

foreach

配列やコレクションの要素分ループします。ループ処理のなかでは最もよく使うと思います。

    @php
        $fruit = ['apple', 'orange', 'grape'];
    @endphp

    @foreach ($fruit as $item) 
        <p>{{ $item }}</p>
    @endforeach

forelse

foreachと同じく配列やコレクションの要素をループします。foreachに加え、配列やコレクションに要素が存在しない場合の処理を@emptyディレクティブに記述することができます。

    @php
        $fruit = []; // 空の配列を渡す
    @endphp

    @forelse ($fruit as $item) 
        <p>{{ $item }}</p>
    @empty
        データが1件もありません。
    @endforelse

まとめ

今回はLaravelのBladeで使うことができる基本の制御構文を解説しました。最後のforelse文なんかはかなり見慣れない構文ですが、使いどころは結構あると思います。状況に応じて最適な制御文を記述したいものです。

Laravel

Posted by kobainmac