ブレードテンプレートでは、last()メソッドを使用してforeachループの最後の反復を見つけます。
@foreach ($colors as $k => $v)
<option value={!! $v->id !!} {{ $colors->last()->id==$v->id ? 'selected':'' }} > {!! $v->name !!} </option>
@endforeach
大丈夫ですか?おそらく同じことをするLaravelスタイルの方法がありますか?
Laravel 5.3+に関しては、 $ loop 変数を使用できます
$loop->last
@foreach ($colors as $k => $v)
@if($loop->last)
// at last loop, code here
@endif
@endforeach
コレクションの最後のアイテムのインスタンスを取得する場合は、何をしても大丈夫です。
さらに、Laravel 5.3では、$loop
変数。最後の繰り返しのブール値を取得できます$loop->last
または現在の反復インデックスを取得する$loop->iteration
、レコードの総数$loop->count
およびさらにいくつか ループ変数
@foreach ($posts as $post)
{{ $post->title }} ({{ $loop->iteration }} of {{ $loop->count }})
@endforeach
_$colors
_がCollection
、$colors->last()
およびend($colors)
の両方が機能する場合
@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
最後のメソッドが機能しているかどうかはわかりませんが、機能していない場合は、これを試してください:
@foreach ($colors as $v)
<option value={!! $v->id !!} @if($v == end($colors)) 'selected' @endif > {!! $v->name !!} </option>
@endforeach