2016-03-13 25 views
5

Trong mẫu lưỡi tôi sử dụng phương pháp cuối cùng() để tìm lặp cuối cùng của vòng lặp foreach:Tìm lặp cuối cùng của vòng lặp foreach trong lưỡi laravel

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

Is it ok? Có lẽ có một cách tạo kiểu Laravel để làm như vậy?

Trả lời

18

Đối với Laravel 5.3+, bạn có thể sử dụng biến số $loop

$loop->last 

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

Bạn có thể muốn sửa điều kiện nếu nó có dấu ngoặc đơn thay vì dấu ngoặc nhọn đôi :) – andersevenrud

+3

Chỉ hoạt động từ phiên bản Laravel 5.3 –

0

Không biết nếu đó là phương pháp cuối cùng đang làm việc nhưng nếu không, hãy thử này:

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

nếu $colors là một Collection, $colors->last()end($colors) cả hai công trình

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

hoặc

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

Điều bạn làm hoàn toàn là vây e nếu bạn muốn có được thể hiện của mục cuối cùng trong bộ sưu tập.

Ngoài ra, trong Laravel 5.3 bạn có thể sử dụng $loop biến, cho phép bạn để có được boolean cho lần lặp cuối cùng $loop->last hoặc để có được chỉ số lần lặp hiện tại $loop->iteration, tổng số hồ sơ $loop->count và một vài chi tiết The Loop Variable

@foreach ($posts as $post) 

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

@endforeach 
+0

+1 Ngoài ra, tôi nghĩ rằng nó đáng nhắc đến bản thân '$ loop-> last' bit, giải quyết vấn đề chính của câu hỏi này. – kefir500

Các vấn đề liên quan