如何在 Laravel blade @each 中获取迭代值?

How do I get iterations value in Laravel blade @each?

Laravel Documentation开始,我改了这个:

<ul>
    @foreach($users as $user)
        <li>{{ $loop->iteration }}</li>
        <li>{{ $user->name }}</li>
        <li>{{ $user->email }}</li>
    @endforeach
</ul>

进入:

<ul>  
    @each('user.list', $users, 'user', 'user.empty')
</ul>

list.blade.php

<li>{{ $loop->iteration }}</li>
<li>{{ $user->name }}</li>
<li>{{ $user->email }}</li>

empty.blade.php

<li>There is no user is users.</li>

但是,我在 {{ $loop->iteration }}

中收到错误“未定义的变量:循环”

那么,有什么方法可以在@each 中进行迭代吗?

如解释的那样in the documentation

Views rendered via @each do not inherit the variables from the parent view. If the child view requires these variables, you should use @foreach and @include instead.

因此您的代码不会从处理循环的父视图继承 $loop 变量。

类似这样的方法可能有效:

@if (count($users)
    @foreach ($users as $user)
        @include("user.list", compact("user", "loop"))
    @endforeach
@else
    @include("user.empty")
@endif