2015-10-19 4 views
0

Я использую Laravel 4.2 для проекта.Laravel Заказ маршрутов

У меня есть настройки маршрутов:

слизняк, категория, услуги

С точки зрения упорядочения, если я перееду услуги выше слизняка, он не может найти слизняка и в конечном счете идет на к и тем же самым, если я сохраню метод slug выше сервисов. Он тоже не может этого найти.

Моих текущие маршруты выглядят следующим образом:

Route::get('{slug?}', '[email protected]'); 
Route::get('{category?}', '[email protected]'); 
Route::get('{services?}', '[email protected]'); 

Есть ли способ, чтобы исправить это, категория одна работает отлично, но переключение пробковые и услуги вокруг создают проблему.

Благодаря

+1

Это, вероятно, потому, что ваши маршруты все же в теории, вы не можете сделать что-то вроде '/ категории/{категория}' или '/ услуги/{ обслуживание} '. Просто проверить? Принимая во внимание, что я новичок в laravel lol –

+0

Просто попробовал, что @AndyHolmes сервисы просто не работают. Он маршрутизируется по маршруту пробок. – StuBlackett

+1

. Вам также нужно сначала указать наиболее специфический маршрут, иначе будет применен более общий, потому что '{slug?}' Применяется к буквально любому, что вы передаете. –

ответ

2

Они, как вы написали маршруты, Laravel не имеет возможности сказать, какой запрос должен идти на какой маршрут, потому что вы написали три маршрута с одним дополнительным параметром, который может быть что угодно. Путь работы маршрута: он применяет первый маршрут, соответствующий шаблону. Вот почему, когда он попадает в первый шаблон маршрута, который говорит «один параметр, который может быть чем угодно», он выбирает этот маршрут.

Вы должны дать Laravel какой-то намек, как:

Route::get('{slug?}', '[email protected]')->where('slug', '(blog|home|contact)'); 

Route::get('/category/{category?}', '[email protected]'); 

Route::get('/services/{services?}', '[email protected]'); 

Если ограничить возможные значения или если вы поставите дополнительную часть в URL, Laravel сможет распознать, какой маршрут должен идти, к которому обработчик.

Посмотрите на docs, чтобы получить больше идей

+0

Спасибо за это! Работа slug & category, но службы все еще не работают. Я пробовал -> где ('slug', '[A-Za-z] +'); Но не повезло! – StuBlackett

+0

'[A-Za-z] +' означает, что slug имеет любую строчную или строчную букву и имеет минимальную длину 1. –

+0

Итак, как мне получить категорию и службы запрета URL. Пойти go HomeController @ index Недостатки docs не помогают. – StuBlackett

Смежные вопросы