我有一条带有参数的路线
Route::get('forum/{ques}', "ForumQuestionsController@show");
现在我想要一条类似的路线
Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
当我到达localhost:800/forum/add
时,我会被路由到ForumQuestionsController@show
,而不是ForumQuestionsController@add
我知道我可以在ForumQuestionsController
的show方法中处理这个问题,并根据参数返回不同的视图。但我想要这样。
首先给这个
Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
然后是以下
Route::get('forum/{ques}', "ForumQuestionsController@show");
另一种方法(使用正则表达式约束)
Route::pattern('ques', '[0-9]+');
Route::get('forum/{ques}', "ForumQuestionsController@show");
如果ques是一个数字,它将自动转到show方法,否则添加方法
您可以调整路线的顺序来解决问题。
将add
放在show
之前,然后laravel将使用第一个匹配作为路由。
Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
Route::get('forum/{ques}', "ForumQuestionsController@show");
我认为您的{ques}参数没有正确获取。你可以试试这个:
Route::get('forum/show/{ques}', "ForumQuestionsController@show");
Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
如果您在显示方法中使用任何参数,请添加参数:
public function show($ques){
}