使用route()时Laravel刀片出现“未定义变量”错误

时间:2019-08-27 14:43:28

标签: php laravel routes laravel-blade laravel-routing

作为一个项目,我正在构建一个类似于论坛的stackoverflow。我希望在显示单个问题的页面上,用户能够单击发问者的姓名并转发到相应的用户个人资料页面。我可以使用{{ $question->user->name }}从数据库中获取名称。添加<a href=""></a>部分时会发生问题!

此外,个人资料页面也可以使用。我可以访问它们,然后URL会显示例如:../profile/1

这是web.php文件中的路由:

Route::get('/profile/{user}', 'PageController@profile')->name('profile');

这是PageController的一部分:

public function profile($id)
    {
      $user = User::with(['questions', 'answers', 'answers.question'])->find($id);
      return view('profile')->with('user', $user);
    }

这是show.blade“查看”问题页面中的代码,该代码不起作用:

<p>
    Submitted by <a href="{{ route('profile', $user->id) }}">{{ $question->user->name }}</a>
</p>

我收到的错误消息是Undefined variable: user

这让我感到惊讶,因为在个人资料页面上转发到特定问题可以使用以下刀片代码:

<a href="{{ route('questions.show', $question->id) }}">View Question</a>

web.php文件中的相应路由:

Route::resource('questions', 'QuestionController');

和QuestionController:

public function show($id)
    {
      $question = Question::findOrFail($id); 

      return view('questions.show')->with('question', $question);
    }

我以为我像在QuestionController中定义了$user一样在PageController中定义了变量$question

2 个答案:

答案 0 :(得分:1)

我可以看到您正在使用具有关系的Eloquent模型。如果要显示问题的用户ID,可以使用QuestionUser之间的关系来查找发布用户的ID。

Submitted by <a href="{{ route('profile', $question->user->id) }}">{{ $question->user->name }}</a>
                                          ^^^^^^^^^

答案 1 :(得分:-1)

//just change  your  like this way

 public function profile($id)
{
  $user = User::with(['questions', 'answers', 'answers.question'])->find($id);
  return view('profile',compact('user));
}