Symfony2 как разрешить слаг с тире в маршрутах regex? - PullRequest
15 голосов
/ 10 октября 2011

Мой маршрут (слаг содержит тире!):

region:
  pattern: /regione/{slug}-{id}
  defaults: { _controller: SWAItaliaInCifreBundle:Default:region }

В шаблоне Twig:

{% for r in regions %}
    <a href='{{ path('region', { 'slug':r.slug, 'id':r.id }) }}'>{{ r.name }}</a>
{% endfor %}

Я получаю ошибку о сопоставлении регулярного выражения, Вопрос : почему Symfony2 не разрешает черточки в URL?Как я могу указать, что мой маршрут содержит тире (и он отлично работает)?

Возникла исключительная ситуация во время рендеринга шаблона (параметр "slug" для маршрута "region" должен совпадать ")[^ / -] +? "(" дано-валь-д-аоста-валье-д-аост ").")

Ответы [ 3 ]

16 голосов
/ 10 октября 2011

Косые черты по умолчанию запрещены.Вы можете включить их, изменив требования по умолчанию.В вашем случае было бы также хорошо указать требования к идентификатору, поскольку он отделен чертой.

См. Пример ниже.

region:
    pattern: /regione/{slug}-{id}
    defaults:
        _controller: SWAItaliaInCifreBundle:Default:region
    requirements:
        slug: "[a-zA-Z1-9\-_\/]+"
        id: "\d+"
6 голосов
/ 09 февраля 2012

Это регулярное выражение работает для меня.(требование {id}, предложенное Майклом)

region:
  pattern: /regione/{slug}-{id}
  defaults: { _controller: SWAItaliaInCifreBundle:Default:region }
  requirements:
    slug: "[a-zA-Z0-9-_/]+"
    id: "\d+"
1 голос
/ 27 августа 2012

если вы попробуете это, вы получите ошибку, подобную этой:

An exception has been thrown during the rendering of a template ("Parameter "slug" for route "routing_whatever" must match "[a-zA-Z0-9-_/]+" ("Topics/Virtualization Security" given).") in ...

как показано в http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html Вы должны использовать:

slug: ". +"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...