Laravel ビューでforeachを使う時に条件により処理を変える方法【フラグ処理】

Laravel・PHP豆知識・トラブル対策

foreachの中で、値が見つかったらフラグを立てる処理を解説します。

フラグを設定すれば、【ON】【OFF】を切り替えられます。

ビューファイル上で、条件によって異なる処理を入れたい時などに非常に便利。

If文だけでは処理しにくい場合などに、参考にしてください。

Laravel:foreachループで値が見つかったらフラグ処理を行う

たとえば、次のようなコードを記述したいとします。

【実行したい処理】

  • ユーザーのテスト結果を表示させる
  • テスト結果は複数ある
  • テストが終了していないユーザーには【テスト開始】ボタンを表示する

if と foreachを使ってコードを書いていきます。

   @php

      $f_found=false;

   @endphp

@foreach($tests->result as $result)
<a href=”/testresult”>{{$result->name }}</a>

   @php

      $f_found=true;

   @endphp

@break

@endforeach

@if($f_found==false)

★見つからなかったときの処理を書く★

<a href=”/teststart”>【テスト開始】</a>

@endif

コードの意味

$f_found 変数に false を代入しておく

foreachを使って、テスト結果の要素をひとつずつ取り出す

{{$result->name }}を表示する

このときに $f_found 変数に true を代入する

最初の1回だけ{{$result->name }}を表示したら、foreachを抜ける

もし$f_found変数がfalseの場合は、【テスト開始】リンクを表示する

これで、目的に合ったコードになります。

テストが終わっていれば、最初のテスト結果だけ表示されます。

もしまだテストが終わっていない場合には、【テスト開始】リンクが表示されます。

今回のコードのポイントは、赤色部分です。

   @php

      $f_found=false;

   @endphp

   @php

      $f_found=true;

   @endphp

このPHP文を入れることで、フラグを設定しています。

このあと、フラグを立てるときは【TRUE】、フラグを下げるときは【FALSE】をIF文に設定します。

今回は、下記のようにOFFを使って処理をしました。

@if($f_found==false)

<a href=”/teststart”>【テスト開始】</a>

@endif

フラグは何かの条件に基づいてオン・オフを設定したいときに、使えます。

わりと便利なので、試してみてくださいね。

コメント

タイトルとURLをコピーしました