考虑以下视图partial:
@foreach($comments as $index => $c)
<tr{{ $index % 2 == 1 ? '' : ' class="row-color-alt"' }}>
<td>{{ $c->user->present()->avatar_and_name }}</td>
<td>{{ $c->body }}</td>
<td>{{ $c->added_on }}</td>
</tr>
@endforeach
在这里,我可以轻松地迭代$comments
,而$index
将是一个枚举的计数器。
但是,如果我转换为@each
的用法,例如:
@each('comment.item', $comments, 'c', 'comment.empty')
在这种情况下,@each
将迭代$comments
,并且每次都包含视图comment/item.blade.php
。视图中没有@foreach
,因此它将是这样的:
<tr>
<td>{{ $c->user->present()->avatar_and_name }}</td>
<td>{{ $c->body }}</td>
<td>{{ $c->added_on }}</td>
</tr>
在这种情况下,如何复制枚举计数器?
答案 0 :(得分:1)
从源代码看,迭代器索引看起来像是$key
变量。因此,您的comment/item.blade.php
视图应如下所示:
<tr{{ $key % 2 == 1 ? '' : ' class="row-color-alt"' }}>
<td>{{ $c->user->present()->avatar_and_name }}</td>
<td>{{ $c->body }}</td>
<td>{{ $c->added_on }}</td>
</tr>
如果您使用的是4.1,则可以在renderEach
中查看Illuminate\View\Environment.php
方法。如果您使用的是4.2或5.0,则renderEach
方法位于Illuminate\View\Factory.php
。
答案 1 :(得分:0)
您可以改为使用@for
循环。
@for($i=0;$i<= count($comments);$i++)
<tr{{ $i % 2 == 1 ? '' : ' class="row-color-alt"' }}>
<td>{{ $comments[$i]->user->present()->avatar_and_name }}</td>
<td>{{ $comments[$i]->body }}</td>
<td>{{ $comments[$i]->added_on }}</td>
</tr>
@endforeach