我对正则表达式非常糟糕,我的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 :(得分:2)
不匹配:http://regex101.com/r/sB8cB5/1
在regexp中,您必须明确定义与正则表达式匹配的内容。您不能假设如果regexpr与两个字符串不匹配,则它与所有其他字符串匹配。
您还必须知道,对于symfony,路由占位符的默认要求是:
[^/]+
我使用了这个正则表达式,但没有在symfony实例上测试,但它可以在你的情况下工作:
^((?!.*(profile|adverse))[^\/]+)$
或
^((?!.*(profile|adverse))[^/]+)$
http://regex101.com/r/rS4eL4/1
你也可以在symfony中创建自定义url matcher,这不是必须的,这是regexp