路由必须与Symfony2匹配

时间:2014-08-30 16:42:42

标签: php regex symfony

我对正则表达式非常糟糕,我的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匹配

1 个答案:

答案 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