2012-09-16 2 views
2

В настоящее время я пытаюсь использовать тире в качестве разделителей сегментов в URL-адресе с Symfony 1.4.18, и у меня есть некоторые проблемы, чтобы заставить его работать.Использовать тире в URL-адресе с помощью Symfony 1.4

Вот мой маршрут:

franchise: 
    url:   /number-:page-:slug 
    param:  { module: store, action: franchise, page: 1 } 
    options:  { suffix: .html, segment_separators: [ /,- ] } 
    requirements: 
     page: \d+ 

Как вы можете видеть, шаблон очень просто определяю постоянный «номер», а затем тир и переменные страницы Wich только число. За ним следует тире и слизня (слив может содержать буквенно-цифровые значения и тире тоже).

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

Пустой модуль и/или действие после разбора URL ...

Я попытался заменить тире между: page и: slug по знаку плюс (и добавив его в segment_separators), но это не сработало.

Я не знаю, что делать дальше? У кого-то уже были такие проблемы?

ответ

1

Проблема заключается в том, что у вашего slug есть дефисы, поэтому Symfony не может определить, где находится разделитель между page и slug.

Если вы добавите требование к slug, явным образом сообщит Symfony, что slug может содержать тире, он будет работать.

franchise: 
    url:   /number-:page-:slug 
    param:  { module: store, action: franchise, page: 1 } 
    options:  { suffix: .html, segment_separators: [ /,- ] } 
    requirements: 
    page: \d+ 
    slug: "[a-zA-Z0-9\-]+" 
1

Я испытал это дело все больше и больше Вы не можете использовать более одного сепаратора, кроме /

Пример

работал «/ тест-: тест» -> один сепаратор не работал «/ тест-: тест-: тест» больше чем один работал «/ тест /: тест /: тест» больше чем один, но «/»

надежда эта информация полезна спасибо ..