Laravel使用overtrue/laravel-follow时$followings变量未定义报错求助
问题原因及解决办法
核心错误:视图参数传递方式错误
你在return view()里的写法有误,view()函数的第二个参数需要是包含所有变量的关联数组,但你现在把compact('user')、compact('posts')、compact('followings')作为三个独立参数传入——这导致只有第一个user变量被传递到视图,posts和followings根本没传进去,所以视图里会报Undefined variable $followings。
修正后的控制器代码
public function userFollow($username) { $user = User::where('username', $username)->firstOrFail(); $posts = Post::where('user_id', $user->id)->simplePaginate(3); // 下面这行是冗余代码,前面已经通过firstOrFail拿到了$user,无需重复查询 // $user = User::find($user->id); $followings = $user->followings()->with('followable')->get(); // 将所有变量合并到一个compact中,或直接用数组形式传递 return view('/@', compact('user', 'posts', 'followings')); }
补充说明
compact('a', 'b', 'c')会直接生成['a' => $a, 'b' => $b, 'c' => $c]格式的数组,完全符合view()函数对第二个参数的要求。- 你之前的
dd($followings)会直接终止程序执行,所以哪怕后面的return逻辑有问题,也无法发现——排查这类问题时,记得先注释掉dd()再测试视图变量是否正常传递。
内容的提问来源于stack exchange,提问作者Davi
相关产品推荐
相关产品推荐

