Laravel foreach in blade 模板覆盖变量

Laravel foreach in blade template overiding variables

相当奇怪的错误。

在我的用户页面上,我传递用户数据。

{{ $user->username }}   

这将通过正确的用户名。

但是,如果我这样做:

{{ $user->username }}   

@if ($followers->count())
    <h2>Following</h2>
    @foreach ($followers as $user)
        @include('user/partials/userblock')
    @endforeach
@endif

{{ $user->username }}

第一个 $user->username 将正确输出,但最后一个实际上 return 在 foreach 中循环的最后一个用户!

为什么会这样?

这是用户控制器,对于那些想知道的人:

public function getUser($username) {
    $user = User::where('username', $username)->first();        

    if (!$user) {
        return redirect()->route('home')->with('info', 'User not found.' );
    }       

    $followers = $user->followers();

    return view('user.index')
        ->with('user', $user)
        ->with('followers', $followers);    
}       

你可以使用另一个变量,像这样:

public function getUser($username) {
$cuser = User::where('username', $username)->first();        

if (!$cuser) {
    return redirect()->route('home')->with('info', 'User not found.' );
}       

$followers = $cuser->followers();

return view('user.index')
    ->with('cuser', $cuser)
    ->with('followers', $followers);    
} 

而你blade:

{{ $cuser->username }}   

@if ($followers->count())
    <h2>Following</h2>
    @foreach ($followers as $user)
        @include('user/partials/userblock')
    @endforeach
@endif

{{ $cuser->username }}

希望这有效!

只需使用另一个变量:

@foreach ($followers as $follower)
    @include('user/partials/userblock', ['user' => $follower])