Intereting Posts
Как преобразовать этот массив PHP в массив JavaScript? Удаление не буквенно-цифровых символов из строки Preg Match между фигурными скобками – preg_match Извлечь значение ячейки из таблицы на основе другого значения ячейки PHP-маршрутизация с помощью Codeigniter (заголовки в URL-адресе для SEO) Десятичные вычисления PHP PHP получает массив поисковых терминов из строки Как остановить XMLHTTP от столкновения друг с другом? PHP PDOStatement: Fetch A Row, как первый столбец как ключ массива Как сортировать массив значения по альфа-ставке в php, используя функцию asort () () Передача массива в хранимую процедуру Исключить исключение «Google_Auth_Exception» с сообщением «Недопустимый код» Обновить столбец в базе данных, где максимальное значение php mysql В PHP задана строка месяца, такая как «Ноябрь», как я могу вернуть 11 без использования инструкции 12-разрядного переключателя? Ошибка выполнения с помощью assetic w / Symfony 2 на общем хостинге

Несколько шаблонов в одиночной маршрутизации symfony

Как сделать несколько шаблонов в одиночной маршрутизации Symfony?

Обычно мы имеем маршрутизацию как

blog: pattern: / defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } 

Возможно ли иметь два шаблона маршрутизации?

Что-то вроде

 blog: #Below pattern to match with '/' or '/index' pattern: {/ , /index} defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } 

Вы используете Symfony2? Если вы используете и можете использовать аннотации для своей маршрутизации вместо yml или xml, тогда возможно иметь несколько маршрутов, определенных по этим строкам:

 /** * @Route("/"); * @Route("/home"); */ 

Тогда вам не нужно дублировать метод действия.

Самый простой способ – дублировать блок и сделать 2 маршрута.

 blog: pattern: / defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } blog_index: pattern: /index defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } 

Таким образом, у вас есть возможность использовать оба из них на своем пути, если вам это нужно.

Здесь вы можете увидеть другое сообщение о том, как использовать регулярное выражение в вашей маршрутизации. Возможно, вы можете написать простое регулярное выражение, которое проверяет, установлен ли индекс .

Редактировать:

Если вы работаете с аннотациями, что я предпочитаю, вы можете написать более одного маршрута по вашему классу примерно так:

 /** * @Route("/"); * @Route("/home"); */ 

При использовании маршрутов YAML вы также можете использовать синтаксис выражения привязки узлов для ссылки на существующее определение маршрута.

& указывает первое вхождение якоря, * указывает привязку к ссылке, << сообщает симулятору Symmony yaml о слиянии указанного узла.

 blog: &blog path: / defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } blog_index: <<: *blog path: /index blog_page: <<: *blog path: /blog 

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

 blog: path: / defaults: &blog_defaults _controller: AcmeBlogBundle:Blog:index page: 1 blog_index: path: /index defaults: *blog_defaults blog_page: path: /blog defaults: *blog_defaults 

Однако для предотвращения плохого SEO из-за дублирования контента рекомендуется вместо этого использовать перенаправление .

 blog: path: / defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 } blog_index: path: /index defaults: &blog_redirect _controller: FrameworkBundle:Redirect:redirect route: blog permanent: true blog_page: path: /blog defaults: *blog_redirect 

Чтобы добавить к ответу Джона:

Я использую его много с FOSJsRoutingBundle:

 /** * @Route("/", name="route_name_1", options={"expose"=true}) * @Route("/{id}", name="route_name_2", options={"expose"=true}) * @Method("GET") * @Template() */ 

Таким образом, у меня есть один метод и два маршрута.

Не забудьте установить значение по умолчанию $ id:

 public function indexAction($id = null) { ... }