Laravel 5 single route multiple controller method

不羁岁月 提交于 2020-03-19 05:09:32

问题


I have a route with parameter

Route::get('forum/{ques}', "ForumQuestionsController@show");

Now I want a route something like

Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);

well when I hit localhost:800/forum/add I get routed to ForumQuestionsController@show instead of ForumQuestionsController@add

Well I know I can handle this in show method of ForumQuestionsController and return a different view based on the paramter. But I want it in this way.


回答1:


First give this one

Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);

Then the following

Route::get('forum/{ques}', "ForumQuestionsController@show");

Another Method (using Regular Expression Constraints)

Route::pattern('ques', '[0-9]+');
Route::get('forum/{ques}', "ForumQuestionsController@show");

If ques is a number it will automatically go to the show method, otherwise add method




回答2:


You can adjust the order of routes to solve the problem.

Place add before show , and then laravel will use the first match as route .

Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
Route::get('forum/{ques}', "ForumQuestionsController@show");



回答3:


I think your {ques} parameter do not get properly. You can try this:

Route::get('forum/show/{ques}', "ForumQuestionsController@show");
Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);

If you use any parameters in show method add parameters:

public function show($ques){
}


来源:https://stackoverflow.com/questions/36259618/laravel-5-single-route-multiple-controller-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!