数据未从 Laravel 控制器正确传递到 blade 视图 **仅在生产中**
Data not passed correctly from Laravel controller to blade view **ONLY IN PRODUCTION**
//profile.blade.php
<form action="{{ $isFollowing ? route('unfollow', $user->username) : route('follow', $user->username) }}" method="post">
@csrf
<button type="submit">{{ $isFollowing ? 'Unfollow' : 'Follow' }}</button>
</form>
// ProfileController.php
public function index()
{
$reqUsername = request()->route()->parameter('username');
$user = User::where('username', $reqUsername)
->with(['followers', 'records' => function($query) {
$query->with('likes');
}])
->firstOrFail();
if ($user->followers->count()) {
foreach ($user->followers as $follower) {
$isFollowing = $follower->id == auth()->id();
}
} else {
$isFollowing = false;
}
return view('users.profile', [
'user' => $user,
'isFollowing' => $isFollowing
]);
}
我最近在将 Laravel 应用程序部署到 Heroku 时遇到问题。请注意,直到最近,这在生产中一直运行良好。使用 Laravel Valet 上面的代码片段在开发中仍然可以正常工作;但是,在生产中,无论数据是否显示当前经过身份验证的用户正在关注我们所在的用户,$isFollowing
变量始终作为 bool(false) 返回到视图。
到目前为止我已经尝试过的事情;
dd($isFollowing)
正在制作中。当我们到达路线时,我希望这会显示 true 或 false,在生产中,我看到 false 前面有一个脱字符 => ^ False
.
明确设置所有条件值和比较,即 if ($user->followers->count() > 0)
而不是 if ($user->followers->count())
。
我目前正在研究什么;
- 可能是对其中一个作曲家包(或 PHP/Laravel/Composer 版本)的更新导致了这个问题?我自己没有对这些进行任何更改,所以也许这可能是 Heroku 的自动更新?
在此先感谢您对此问题的任何帮助。
所以,我没有弄清楚是什么导致了这个错误,但对我的控制器代码稍作更改似乎解决了这个问题。
public function index()
{
$reqUsername = request()->route()->parameter('username');
$user = User::where('username', $reqUsername)
->with(['followers', 'records' => function($query) {
$query->with('likes');
}])
->firstOrFail();
return view('users.profile', [
'user' => $user,
'isFollowing' => $user->followers->contains('id', auth()->id())
]);
}
//profile.blade.php
<form action="{{ $isFollowing ? route('unfollow', $user->username) : route('follow', $user->username) }}" method="post">
@csrf
<button type="submit">{{ $isFollowing ? 'Unfollow' : 'Follow' }}</button>
</form>
// ProfileController.php
public function index()
{
$reqUsername = request()->route()->parameter('username');
$user = User::where('username', $reqUsername)
->with(['followers', 'records' => function($query) {
$query->with('likes');
}])
->firstOrFail();
if ($user->followers->count()) {
foreach ($user->followers as $follower) {
$isFollowing = $follower->id == auth()->id();
}
} else {
$isFollowing = false;
}
return view('users.profile', [
'user' => $user,
'isFollowing' => $isFollowing
]);
}
我最近在将 Laravel 应用程序部署到 Heroku 时遇到问题。请注意,直到最近,这在生产中一直运行良好。使用 Laravel Valet 上面的代码片段在开发中仍然可以正常工作;但是,在生产中,无论数据是否显示当前经过身份验证的用户正在关注我们所在的用户,$isFollowing
变量始终作为 bool(false) 返回到视图。
到目前为止我已经尝试过的事情;
dd($isFollowing)
正在制作中。当我们到达路线时,我希望这会显示 true 或 false,在生产中,我看到 false 前面有一个脱字符 =>^ False
.明确设置所有条件值和比较,即
if ($user->followers->count() > 0)
而不是if ($user->followers->count())
。
我目前正在研究什么;
- 可能是对其中一个作曲家包(或 PHP/Laravel/Composer 版本)的更新导致了这个问题?我自己没有对这些进行任何更改,所以也许这可能是 Heroku 的自动更新?
在此先感谢您对此问题的任何帮助。
所以,我没有弄清楚是什么导致了这个错误,但对我的控制器代码稍作更改似乎解决了这个问题。
public function index()
{
$reqUsername = request()->route()->parameter('username');
$user = User::where('username', $reqUsername)
->with(['followers', 'records' => function($query) {
$query->with('likes');
}])
->firstOrFail();
return view('users.profile', [
'user' => $user,
'isFollowing' => $user->followers->contains('id', auth()->id())
]);
}