2014-08-30 6 views
-3

Я очень плохо с регулярными выражениями и у меня есть проблемы с моим Symfony2 маршрутымаршрут должен соответствовать Symfony2

Это мой маршрут YML

ilppa_adverse_view: 
    path:  /{adverseReference}/{adverseName} 
    defaults: 
     _controller: IlppaAdverseBundle:Adverse:view 
    requirements: 
     adverseReference: !profile|!adverse 

И у меня есть проблема, генерирующий мой маршрут

An exception has been thrown during the rendering of a template ("Parameter "adverseReference" for route "ilppa_adverse_view" must match "!profile|!adverse" ("5401b864ad2f1" given) to generate a corresponding URL.") in FOSUserBundle:Profile:show_content.html.twig at line 16. 

Я не понимаю, потому что 5401b864ad2f1 матч с !profile|!adverse

+0

[Регулярное выражение для строки, не содержащие слово?] (Http://stackoverflow.com/questions/406230/ регулярное выражение к матч-строка-не-содержащие-а-слово) –

ответ

2

нет. Это не соответствует: http://regex101.com/r/sB8cB5/1

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

вы также должны знать, что для требований Symfony по умолчанию для маршрута заполнителей:

[^/]+ 

Я играл с этим регулярным выражением немного, но не тестируется на симфони например, но она могла бы работать в вашем случае:

^((?!.*(profile|adverse))[^\/]+)$ 

или

^((?!.*(profile|adverse))[^/]+)$ 

http://regex101.com/r/rS4eL4/1

вы также можете создать собственный URL Искателя в Symfony, это не требуется, что это регулярное выражение