Метод 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
и вернуть другое представление на основе параметра. Но я хочу, чтобы все было именно так.
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 - это число, оно автоматически перейдет к методу показать, в противном случае добавьте метод
Вы можете изменить порядок маршрутов, чтобы решить эту проблему.
Поместите 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"]);
Если вы используете какие-либо параметры в методе show, добавьте параметры:
public function show($ques){
}