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])
相当奇怪的错误。
在我的用户页面上,我传递用户数据。
{{ $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])