我使用Symfony 2.2.4,我拼命地生成URL(使用Twig)。事实上,当我的网址加点时,我总是得到同样的错误。
例如: - 路线:“my_route” - 第一个参数:“id” - 第二个参数:“标题”
在Twig:
{{ path("my_route", {"id" : 1984, "title" : "another...test"}) }}
我收到以下错误:
在渲染模板期间抛出了异常 (“参数”标题“路由”my_route“必须匹配”[^ /。] ++“ (“另一个......测试”给出)生成相应的URL。“)in ...
我尝试过Symfony 2.0.3,没有问题。
你有想法解决这个问题吗?
感谢您的帮助。
祝你好运
答案 0 :(得分:6)
如果您使用后缀,则应将其添加到路线的要求中并使用{_format}而不是“html”:
documentation的示例:
article_show:
path: /id/{title}.{_format}
defaults: { _controller: AcmeDemoBundle:Article:show, _format: html }
requirements:
_format: html
title: .+
编辑:
您应该避免为参数使用圆点(“。”)。你应该真的使用你的头衔。但是您可以在regex中尝试使用title参数中的点。
requirements:
_format: html
title: .+
答案 1 :(得分:0)
旧问题,但是由于那里仍然有旧的SF代码库,因此可以为某人节省一些时间。
这是SF如何编译正则表达式以匹配路由的问题。这至少适用于1.x和2.x版本,不确定较新的版本。
在routing.yml
中,您需要在title
下指定requirements
参数的预期格式,如下所示:
my_route:
url: /my_route/:id/:title
param: { module: your_module, action: your_action }
requirements: {title: .+}
或者,不使用requirements
,而是在路线上指定路段分隔符也可以解决问题:
my_route:
url: /my_route/:id/:title
param: { module: your_module, action: your_action }
options: { segment_separators: [/] }