【发布时间】:2021-06-03 11:03:16
【问题描述】:
我正在用 Laravel 8 创建一个论坛,基本上每当用户在这个论坛上提出问题时,它都应该被重定向到该问题。
我还想根据问题的slug字段进行重定向过程。
所以为了做到这一点,我在postForm()方法的末尾添加了这个:
return redirect('questions/{slug}');
这是查看问题的途径:
Route::get('questions/{slug}' , [QuestionController::class, 'showQuestion']);
然后我在控制器上编码:
public function showQuestion($slug)
{
$show = Question::find($slug);
if(is_null($show)){
abort(404);
}
return view('questions.question',[
'show' => $show
]);
}
但现在的问题是,当我尝试添加新问题时,问题将成功添加,但它会将我重定向到 404 页面。并且重定向后的 URL 也是这样的:
http://localhost:8000/questions/%7Bslug%7D
但是,如果我尝试在 /questions/ 之后手动添加 slug - db 中已经存在 - 我仍然会得到相同的 404 错误!
那么这里出了什么问题?如何通过每个问题的slug 正确地将用户重定向到该路由?
如果您能帮我解决这个问题,我将不胜感激......
【问题讨论】:
-
您需要将要重定向到的实际 slug 放入
redirect('questions/{slug}')而不是{slug}。
标签: php laravel eloquent laravel-8 slug