在 Blade 模板中,我使用 last() 方法来查找 foreach 循环的最后一次迭代:
@foreach ($colors as $k => $v)
<option value={!! $v->id !!} {{ $colors->last()->id==$v->id ? 'selected':'' }} > {!! $v->name !!} </option>
@endforeach
可以吗?也许有一种 Laravel 风格的方式来实现相同的功能?
在 Blade 模板中,我使用 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
$loop
变量,它允许您获取布尔值以进行最后一个迭代$loop->last
或获取当前迭代索引$loop->iteration
,记录的总数$loop->count
和更多信息。请参阅The Loop Variable。@foreach ($posts as $post)
{{ $post->title }} ({{ $loop->iteration }} of {{ $loop->count }})
@endforeach
$loop->last
这一部分本身,它解决了这个问题的主要问题。 - kefir500@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
$colors
是一个Collection
,那么$colors->last()
和end($colors)
都能工作。不知道最后一种方法是否有效,如果无效,请尝试以下方法:
@foreach ($colors as $v)
<option value={!! $v->id !!} @if($v == end($colors)) 'selected' @endif > {!! $v->name !!} </option>
@endforeach