【PHP/Laravel】便利なBladeテンプレートでforeachを書いてみよう!

こんにちは!エンジニアのオータケです!

皆さんはLaravelを使う際にBladeテンプレートエンジン使いこなせてますか?

特に、モデルからデータを取得しビューに渡したあと表示する場面が出てくるかと思いますがその表示をどうやって実現していますか?

本記事では、

[基礎] Bladeテンプレートエンジンとは
[基礎] Bladeテンプレートエンジンを使ってforeachを書く方法
[実践] foreachを使った際の最初の処理と最後の処理で何かしたい

について解説いたします。

ぜひご覧ください!

目次

Bladeテンプレートエンジンとは

LaravelにはBladeテンプレートエンジンという機能がついています。

ビューを作成する際にはこのBladeテンプレートエンジンを使います。

このBladeテンプレートエンジンを使うことで同じ処理を書くことを省けたり、面倒な処理が少々短くすることができたり便利な機能です。

今回はそのBladeテンプレートエンジンを使ったforeachの書き方を学んでいきます。

Bladeテンプレートを使ってforeachの処理を書こう

早速Bladeテンプレートでのforeachの書き方を見てみましょう

@foreach ($articles as $article)
  echo $article->name;
@endforeach

Bladeテンプレートのforeachを使うためには@foreachを使います。必ず@foreachのあとには@endforeachで閉じる必要があります。

あとは、PHPのforeachと同じような使い方です。

そもそもforeachってなんだろう?という方についてはこちらの記事をご覧ください。

ループの最初または最後に何か処理をしたい場合

先程は@foreachを使ってループ処理を書いてみました。

Bladeテンプレートエンジンの@foreachにはループの最初とループの最後を判断するための機能があります。

まず、ループの最初の処理かどうかを判断するには次のようなコードを書きます。

@foreach($articles as $article)
  @if ($loop->first)
    echo 'ループの最初';
  @endif
@endforeach

$loop->firstを使うことでループの最初かどうかを判断することができます。

では次に、ループの最後かどうかを判断するためにはどうすればよいでしょうか?

@foreach($articles as $article)
  @if ($loop->last)
    echo 'ループの最後';
  @endif
@endforeach

ループの最後かどうかについては$loop->lastを使うことで判断することができます。

とっても簡単ですよね?

これらを組み合わせるとモデルで取得してきたデータをテーブルに表示する際にヘッダーにだけ何か処理をしたい、フッターにだけなにか処理をしたいなど実現することができます。

まとめ

いかがでしょうか?
今回はBladeテンプレートの@foreachについて解説してきました。

通常のforeachと使い方はかわりません。

そのため覚えるほどのことでもないかと思いますが、後半に解説した$loop->firstや$loop->lastは便利な機能だと思うので覚えておいて損はないでしょう。

Bladeテンプレートを使いこなしてよりよいLaravelライフを!

この記事を書いた人

30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

目次