Метод Laravel 5 с одним маршрутом и несколькими контроллерами


У меня есть маршрут с параметром

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 и вернуть другое представление на основе параметра. Но я хочу, чтобы все было именно так.

Author: Tom11, 2016-03-28

3 answers

Сначала дайте это

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 - это число, оно автоматически перейдет к методу показать, в противном случае добавьте метод

 1
Author: Haseena P A, 2016-03-28 09:58:32

Вы можете изменить порядок маршрутов, чтобы решить эту проблему.

Поместите add перед show, а затем laravel будет использовать первое совпадение в качестве маршрута.

Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "ForumQuestionsController@add"]);
Route::get('forum/{ques}', "ForumQuestionsController@show");
 1
Author: KIDJourney, 2016-03-28 09:48:42

Я думаю, что ваш параметр {ques} не работает должным образом. Вы можете попробовать это:

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

Если вы используете какие-либо параметры в методе show, добавьте параметры:

public function show($ques){
}
 0
Author: tanvirjahan, 2016-03-28 12:10:01