[PHP] Laravel で条件分岐、ループの制御構文をテンプレートファイルで使用する時の使い方メモ

[PHP] Laravel で条件分岐、ループの制御構文をテンプレートファイルで使用する時の使い方メモ

Laravel ではテンプレート側で表示する際の条件分岐やループなどの制御構文も簡潔に書けるようになっています。通常の PHP とは少しちがった形で提供されていますので使い方を整理してみました。検証している Laravel のバージョンは 5.7 です。

制御構文はディレクティブと呼ばれる @ で始まる書き方で記入していきます。ディレクティブを使用する時は文末のセミコロンは必要ありません。

公式ドキュメント:Bladeテンプレート 5.7 Laravel

<目次>
if文など
isset、emptyの空の判定文
for、while などの繰り返し文
ループを終了したり、繰り返し処理をスキップする
ループ中の情報を取得する

if文など

if文

if 文は @if ディレクティブとして使用できます。

使用例

@if ($value)
  // trueだった場合の表示
@endif
@if ($value)
  // trueだった場合の表示
@elseif ($value02)
  // 違う条件の場合で true だった場合の表示
@else
  // 当てはまらなかった場合の表示
@endif

if文 で false になる場合

条件が否定される場合は @unless ディレクティブが使用できます。

使用例

@unless ($value)
  // $value がfalseの場合の表示
@endunless

isset、empty の空の判定文

isset

変数が定義されているかを判定するには @isset ディレクティブを使用します。

使用例

@isset ($value)
  // $value が定義済みの場合表示する
@endisset

empty

変数が空かどうかを判定するには @empty ディレクティブを使用します。

使用例

@empty ($value)
  // $value が空の場合表示する
@endempty

for 、while などの繰り返し文

for 文

for 文は @for ディレクティブとして使用できます。

使用例


@for ($i = 0; $i < 10; $i++)
  // 繰り返し処理
@endfor

foreach 文

foreach 文は @foreach ディレクティブとして使用できます。

使用例

@foreach ($valus as $valu)
  // 繰り返し処理
  {{ $valu }}
@endforeach

foreach else 文

foreach が終わって空になった時になにか処理を入れてからループを終えるには
@forelse ディレクティブが使用できます。

使用例

@forelse ($valus as $valus)
  <p>{{ $valus }}</p>
@empty
 // $valus が空だった場合の処理
  <p>$valus は空になりました。</p>
@endforelse

while 文

while 文は @while ディレクティブとして使用できます。

使用例

@while (true)
  // 繰り返し処理
@endwhile

ループを終了したり、繰り返し処理をスキップする

break 文

ループを終了するには @break ディレクティブを使用できます。@break ディレクティブが出現した時点でループを終了できます。

使用例

条件が当てはまった時に処理を終了します。

@foreach ($users as $user)
  <li>{{ $user->name }}</li>
  @if ($user->id == 5)
    // ループ終了
    @break
  @endif
@endforeach

ディレクティブの後に条件を続けて記入して一行で記入することもできます。

@foreach ($users as $user)
  @break($user->id == 5)
@endforeach

continue 文

ループの途中で処理をスキップするには @continue ディレクティブを使用できます。条件が当てはまる時にループをスキップします。 

使用例

条件が当てはまった時に処理をスキップして、ループ処理を続けます。

@foreach ($users as $user)
  @if ($user->id == 5)
    // ループをスキップ
    @continue
  @endif
  <li>{{ $user->name }}</li>
@endforeach

ディレクティブの後に条件を続けて記入して一行で記入することもできます。

@foreach ($users as $user)
  @continue($user->id == 5)
  <li>{{ $user->name }}</li>
@endforeach

ループ中の情報を取得する

$loop 変数

ループ処理中に $loop 変数を使用するとループ中のインデックス情報などを取得することができて便利です。

使用例

@foreach ($users as $user)
  {{ var_dump($loop) }}
@endforeach

上記のようにループ中に $loop 変数の中身を表示すると以下のような値が入っているのを確認できます。

object(stdClass)#218 (8) {
  ["iteration"]=> int(1)
  ["index"]=> int(0)
  ["remaining"]=> int(2)
  ["count"]=> int(3)
  ["first"]=> bool(true)
  ["last"]=> bool(false)
  ["depth"]=> int(1)
  ["parent"]=> NULL
}

各値の意味は次のようになっています。

$loop->iteration
現在の繰り返し数の取得
$loop->index
現在のループのインデックスの取得
$loop->remaining
繰り返しの残り数の取得
$loop->count
繰り返し中の配列の総アイテム数の取得
$loop->first
ループの最初かどうかを取得
$loop->last
ループの最後かどうかを取得
$loop->depth
現在のループのネストレベルを取得
$loop->parent
ループがネストしている場合、親のループ変数を取得

$loop 変数を使うと通常の PHP 時には必要だった関数などを追加することなく簡単に制御できるようになり、スマートに書くことができます。

Related Article

No Comments & Tracbacks

Leave a Comment

Emailは公開されません。*は必須項目です。


*


Categorys

Tags

CSS3 ダッシュボード ヘッダー トラブル コードサンプル スライドショー コンテンツ 素材 jQueryプラグイン Facebook php 引っ越し お知らせ JavaScript CSS カテゴリー Shareボタン IE 投稿タイプ seo Photoshop レスポンシブ Macアプリ ナビゲーション タクソノミー HTML5 WPセキュリティ Git カスタムメニュー サイドバー PHPリファレンス SVG query_posts API WP使い方 iTunes データベース コメント function RSS 条件分岐 get_posts() スマートフォン Sass/Compass マルチサイト機能