Laravel foreach在刀片模板中覆盖变量

时间:2016-12-16 10:10:11

标签: php laravel blade

相当奇怪的错误。

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

{{ $user->username }}   

这将传递正确的用户名。

但是,如果我这样做:

{{ $user->username }}   

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

{{ $user->username }}

第一个$ user-&gt;用户名将正确输出,但最后一个将实际返回在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);    
}       

2 个答案:

答案 0 :(得分:2)

只需使用另一个变量:

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

答案 1 :(得分:1)

你可以使用另一个变量,如下所示:

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);    
} 

你的刀片:

{{ $cuser->username }}   

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

{{ $cuser->username }}

希望这有效!