Bladeテンプレートに@foreachループがあり、コレクションの最初のアイテムに特殊な書式を適用する必要があります。これが最初の項目であるかどうかを確認する条件を追加するにはどうすればよいですか?Laravel Bladeテンプレートのコレクションの最初のアイテムのみを表示する方法
@foreach($items as $item)
<h4>{{ $item->program_name }}</h4>
@endforeach`
Bladeテンプレートに@foreachループがあり、コレクションの最初のアイテムに特殊な書式を適用する必要があります。これが最初の項目であるかどうかを確認する条件を追加するにはどうすればよいですか?Laravel Bladeテンプレートのコレクションの最初のアイテムのみを表示する方法
@foreach($items as $item)
<h4>{{ $item->program_name }}</h4>
@endforeach`
ソーホー、
キーの値を取る:
@foreach($items as $item)
@if ($item == reset($items)) First Item: @endif
<h4>{{ $item->program_name }}</h4>
@endforeach
かそれ以外の場合は、連想配列でない場合は、上記の答えに従ってインデックス値を確認できますが、それは配列が結合的である場合は機能しません。
ただ、最も簡単な方法は、配列の最初の要素で現在の要素を比較することである
@foreach($items as $index => $item)
@if($index == 0)
...
@endif
<h4>{{ $item->program_name }}</h4>
@endforeach
Laravel 5.3は、foreach
ループ内で変数$loop
を使用可能にします。
@foreach ($users as $user)
@if ($loop->first)
This is the first iteration.
@endif
@if ($loop->last)
This is the last iteration.
@endif
<p>This is user {{ $user->id }}</p>
@endforeach
リアムウィルトシャー州の答えとの主要な問題は、パフォーマンスが理由です:
リセット($アイテムあなたがすることができるループ変数で
)ポインタを巻き戻し$ itemsコレクションを何度も繰り返しますそれぞれのループで...いつも同じ結果で。
両方$アイテムとリセットの結果($アイテム)はオブジェクトなので、$アイテム==リセット($アイテム)は、その属性の完全な比較を必要とする...多くのプロセッサ時間を要求します。あなたは特別なフォーマットを適用する場合
@foreach($items as $item)
@if ($loop->first) First Item: @endif
<h4>{{ $item->program_name }}</h4>
@endforeach
: -
それを行うには、より効率的かつエレガントな方法シャノンなどが S-を提案するには、ブレードの$ループ変数を使用することです最初の要素には、次のような操作を行うこともできます(三項条件演算子?:):
@foreach($items as $item)
<h4 {!! $loop->first ? 'class="special"': '' !!}>{{ $item->program_name }}</h4>
@endforeach
注特別文字列の前後に二重引用符のHTMLコード化を避けるために、代わりに{{
}}
表記の{!!
と!!}
タグの使用。
よろしくお願いいたします。
あなたと@ gumma-mocciaroの両方のソリューションが私のケースで動作します。これは短いです。 – SoHo
私にとって完璧に働いた! – Brnovich