Laravel 5单路多控制器方法


Laravel 5 single route multiple controller method

我有一条带有参数的路线

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){
}