2016-01-12 6 views
1

У меня есть объект Page, идентифицированный slug. Также у меня есть действие, чтобы просмотреть страницу в Пажеском:Symfony route/{slug} переопределение существующих маршрутов

контроллере
/** 
* @Route("/{slug}", name="app.page", requirements={"slug": "[\w-]+"}) 
* @ParamConverter("page", class="AppBundle:Page", options={"slug" = "slug"}) 
* @param Request $request 
* @param Page $page 
* @return \Symfony\Component\HttpFoundation\Response 
*/ 
public function showAction(Request $request, Page $page) 
{ 
    // replace this example code with whatever you need 
    return $this->render('Page/view.html.twig', array(
     'page' => $page, 
    )); 
} 

Я пытаюсь получить страницы из базы данных, хорошо это работает. Но у меня проблема, все существующие маршруты (например:/login) переопределены этим действием, поэтому вместо просмотра формы входа я получаю 404, так как у меня нет страницы с логином входа в базу данных.

Как заставить Symfony использовать этот маршрут, если нет соответствующего маршрута?

ответ

3

В основном файле маршрутизации (находится в папке конфигурации) - просто измените порядок ссылок на ваш комплект. Независимо от того, какой маршрут будет согласован, первым будет использовать маршрутизатор, чтобы он мог изменить, какой заказ он проверяет.

Просто разместите пул PageController на самом дне.

Вы можете также ссылаться на контроллеры seperatly в файле маршрутизации, если у вас есть несколько контроллеров в пределах одной и той же пачке

1

Да или так что вы можете использовать префиксы для вашего URL не выглядеть слишком.
Например:
/page/{url} или /user/login
Лучше всего выбрать порядок декларирования маршрутов. Но иногда это может вызвать небольшие проблемы, если ваши URL-адреса похожи ...

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