web-dev-qa-db-ja.com

laravelブレードでforeachループの最後の反復を見つける

ブレードテンプレートでは、last()メソッドを使用してforeachループの最後の反復を見つけます。

@foreach ($colors as $k => $v)
   <option value={!! $v->id !!} {{ $colors->last()->id==$v->id ? 'selected':'' }} > {!! $v->name !!} </option>
@endforeach

大丈夫ですか?おそらく同じことをするLaravelスタイルの方法がありますか?

18
user947668

Laravel 5.3+に関しては、 $ loop 変数を使用できます

$loop->last

@foreach ($colors as $k => $v)
     @if($loop->last)
         // at last loop, code here
     @endif
@endforeach
65
Tom Kur

コレクションの最後のアイテムのインスタンスを取得する場合は、何をしても大丈夫です。

さらに、Laravel 5.3では、$loop変数。最後の繰り返しのブール値を取得できます$loop->lastまたは現在の反復インデックスを取得する$loop->iteration、レコードの総数$loop->countおよびさらにいくつか ループ変数

@foreach ($posts as $post)

    {{ $post->title }} ({{ $loop->iteration }} of {{ $loop->count }})   

@endforeach
4

_$colors_がCollection$colors->last()およびend($colors)の両方が機能する場合

3
cresjie
@foreach ($colors as $v)
    <option value={!! $v->id !!} {!!($v == end($colors)) ? 'selected="selected"' : '' !!} > {!! $v->name !!} </option>
@endforeach

または

@foreach ($colors as $v)
    <option value={!! $v->id !!} {{($v == end($colors)) ? 'selected="selected"' : '' }} > {!! $v->name !!} </option>
@endforeach
2

最後のメソッドが機能しているかどうかはわかりませんが、機能していない場合は、これを試してください:

@foreach ($colors as $v)
<option value={!! $v->id !!} @if($v == end($colors)) 'selected' @endif > {!! $v->name !!} </option>
@endforeach
1
bim