2016-03-28 5 views
4

У меня есть маршрут с параметромLaravel 5 одиночного маршрута Многократного метод контроллера

Route::get('forum/{ques}', "[email protected]"); 

Теперь я хочу маршрутное что-то вроде

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

хорошо, когда я ударил localhost:800/forum/add я назначьте на [email protected] вместо [email protected]

Ну, я знаю, что я могу справиться с этим в методе show ForumQuestionsController и вернуть другое представление, основанное на пункте ДПО. Но я хочу так.

+0

хороший вопрос ..... как это !! –

+1

посмотрите на это http://stackoverflow.com/questions/36203020/laravel-single-route-point-to-different-controller-depending-on-slugs?noredirect11comment60056797_36203020 –

ответ

1

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

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

Тогда следующий

Route::get('forum/{ques}', "[email protected]"); 

Другой метод (с использованием регулярных выражений Constraints)

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

Если Ques это число он будет автоматически переходите к метод show, иначе добавить метод

+0

Только первый полезен, поскольку параметр {ques} также является строкой, где закрытие не будет работать. Но также в первую очередь, что, если бы у меня были эти два маршрута в разных 'Route :: group()' – jovanpreet

1

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

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

Route::get('forum/add', ['middleware' => 'auth:student', 'uses' => "[email protected]"]); 
Route::get('forum/{ques}', "[email protected]"); 
+0

Что делать, если бы у меня были эти два маршрута в другой 'Route :: group()' – jovanpreet

+0

@jovanpreet, если '' '{ques}' '' является номером только, вы можете использовать '' 'Route :: pattern ('ques', '[0-9] +'); '' ', чтобы ограничить тип' '' {ques} '' '. – KIDJourney

+0

нет его не число – jovanpreet

0

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

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

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

public function show($ques){ 
}