Dans le modèle de lame, j'utilise la méthode last () pour trouver la dernière itération de la boucle foreach:
@foreach ($colors as $k => $v)
<option value={!! $v->id !!} {{ $colors->last()->id==$v->id ? 'selected':'' }} > {!! $v->name !!} </option>
@endforeach
Est-ce que c'est bon? Peut-être existe-t-il une manière de Laravel de faire de même?
Quant à Laravel 5.3+, vous pouvez utiliser la variable $ loop
$loop->last
@foreach ($colors as $k => $v)
@if($loop->last)
// at last loop, code here
@endif
@endforeach
Ce que vous faites est tout à fait correct si vous souhaitez obtenir une instance du dernier élément de la collection.
De plus, dans Laravel 5.3 vous pouvez utiliser $loop
variable, qui vous permet d'obtenir un booléen pour la dernière itération $loop->last
ou pour obtenir l'index d'itération actuel $loop->iteration
, nombre total d'enregistrements $loop->count
et quelques autres La variable de boucle
@foreach ($posts as $post)
{{ $post->title }} ({{ $loop->iteration }} of {{ $loop->count }})
@endforeach
si $colors
est un Collection
, $colors->last()
et end($colors)
les deux fonctionnent
@foreach ($colors as $v)
<option value={!! $v->id !!} {!!($v == end($colors)) ? 'selected="selected"' : '' !!} > {!! $v->name !!} </option>
@endforeach
ou
@foreach ($colors as $v)
<option value={!! $v->id !!} {{($v == end($colors)) ? 'selected="selected"' : '' }} > {!! $v->name !!} </option>
@endforeach
Je ne sais pas si cette dernière méthode fonctionne mais sinon, essayez ceci:
@foreach ($colors as $v)
<option value={!! $v->id !!} @if($v == end($colors)) 'selected' @endif > {!! $v->name !!} </option>
@endforeach