当我呼叫特定路由时,我试图覆盖url文本。
假设我有一条路线,例如:
/lessons/{n}
但是我想覆盖{n},并向用户展示公正
/lessons
在调用控制器并将其传递给“ n”变量时。
基本上,我只想覆盖url文本,以便在导航栏上仅显示“ /教训”,同时用我的代码调用/ lessons / {n}并将“ n”变量提供给控制器。>
到目前为止,我有类似的东西:
Route::GET('/lessons/{n}', function ($n) {
return redirect('/lessons', $n);
});
Route::GET('/lessons', 'CourseNuclearController@showLessonView');
我尝试了许多其他方法,但似乎找不到任何方法。
是否有可能做这种事情?
谢谢。
答案 0 :(得分:1)
您的路线中有两个问题。
redirect('/lessons', $n);
,这将引发无效的HTTP状态代码异常。您可以使用会话Flash数据传递课程ID。因此,将您的路线更新为
Route::GET('/lessons/{n}', function ($n) {
// redirect with the session data
return redirect('/lessons')->with('lesson_id', $n);
});
Route::GET('/lessons', function () {
// check if lesson id is present in the session
if($lesson_id = session('lesson_id', null)) {
dump('lesson id is ' . $lesson_id);
} else {
dump('view all lessons');
}
});
答案 1 :(得分:0)
答案 2 :(得分:0)
在GET请求中,参数(n个变量)从URL中获取。因此,您需要在URL中包含该参数才能使其正常工作。
在POST请求中,您可以将变量传递到下一页并检索它以供控制器使用。
根据您的项目,您可能有一个按钮,该按钮触发表单提交,将用户带到下一页,并在隐藏的表单输入中隐藏n变量值。