Laravel 9中如何通过redirect()->route()传递多个数据参数?
在Laravel的
redirect()->route()中传递布尔参数的方法 方法一:通过路由参数传递(需修改路由定义)
- 先修改
web.php中的路由,添加可选的布尔参数(?表示参数可选):
Route::get('student/evaluation/{evaluation}/{questionWasCompleted?}', [EvaluationController::class, 'getEvaluationQuestions']) ->middleware('auth') ->name('student.questionsevaluation');
- 在控制器的重定向逻辑中,传递包含两个参数的数组:
if($questionWasCompleted){ return redirect()->route('student.questionsevaluation', [ 'evaluation' => $evaluation, 'questionWasCompleted' => $questionWasCompleted ])->with('message', 'Question answered.'); }
- 在目标控制器方法中,可以直接接收这个参数:
public function getEvaluationQuestions(Evaluation $evaluation, ?bool $questionWasCompleted = null) { // 在这里使用$questionWasCompleted参数 }
方法二:通过查询字符串传递(无需修改路由)
如果不想改动现有路由结构,可以把参数作为查询字符串附加到URL上,直接在重定向的参数数组中添加键值对即可:
if($questionWasCompleted){ return redirect()->route('student.questionsevaluation', [ 'evaluation' => $evaluation, 'questionWasCompleted' => $questionWasCompleted ])->with('message', 'Question answered.'); }
生成的URL会类似student/evaluation/1?questionWasCompleted=1,在目标方法中通过请求实例获取该参数:
public function getEvaluationQuestions(Evaluation $evaluation) { $questionWasCompleted = request()->query('questionWasCompleted', false); // 在这里使用参数 }
内容的提问来源于stack exchange,提问作者Jefferson Farid
相关产品推荐
相关产品推荐

