2016-03-13 19 views
5

W szablonie ostrza używam ostatnia metoda(), aby znaleźć ostatniej iteracji pętli foreach:Znajdź ostatniej iteracji pętli foreach w ostrzu laravel

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

to jest ok? Być może istnieje sposób w stylu Laravela, aby zrobić to samo?

Odpowiedz

18

jak dla laravel 5.3+, można użyć $loop zmienna

$loop->last 

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

Może chcesz poprawić warunek if Powinien on mieć nawiasy zamiast podwójnych nawiasów klamrowych :) – andersevenrud

+3

Działa tylko z wersji Laravel 5.3 –

0

nie wiem, czy to ostatnia metoda działa, ale jeśli nie, to spróbuj tego:

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

jeśli $colors jest Collection, $colors->last() i end($colors) zarówno prace

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

lub

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

Co robisz to absolutnie płetwa e jeśli chcesz uzyskać instancję ostatniego elementu w kolekcji.

Dodatkowo w laravel 5.3 można użyć $loop zmienną, która pozwala uzyskać wartość logiczną dla ostatniej iteracji $loop->last lub uzyskać bieżący indeks iteracji $loop->iteration, całkowitą liczbę rekordów $loop->count i kilka więcej The Loop Variable

@foreach ($posts as $post) 

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

@endforeach 
+0

+1 także myślę, że warto wspomnieć o '$ pętli loop> last' samego kawałka, który rozwiązuje głównego problemu to pytanie. – kefir500

Powiązane problemy