我使用Symfony 2.2.4,我拼命地尝试生成URL(使用Twig)。事实上,当我的URL包含一个点时,我总是会得到同样的错误。
例如:-路线:"my_Route"-第一个参数:"id"-第二个参数:"标题"
在Twig:
{{ path("my_route", {"id" : 1984, "title" : "another...test"}) }}
我得到以下错误:
在呈现模板期间引发异常(路由"my_route"的"参数"title"必须匹配"[^/.]++"(给出"另一个…测试")生成相应的URL。")在…中
我试过Symfony 2.0.3,没有问题。
你有解决这个问题的办法吗?
提前感谢您的帮助。
向致以最良好的问候
如果使用后缀,则应将其添加到路线要求中,并使用{_format}而不是"html":
文档示例:
article_show:
path: /id/{title}.{_format}
defaults: { _controller: AcmeDemoBundle:Article:show, _format: html }
requirements:
_format: html
title: .+
编辑:
您应该避免使用点(".")作为参数。你真的应该使用你的头衔。但是,您可以在需求中尝试使用regex,以允许在title参数中包含句点。
requirements:
_format: html
title: .+
老问题,但由于仍有旧的SF代码库,这可能会为某人节省一些时间
这是SF如何编译正则表达式以匹配路由的问题。这至少适用于1.x和2.x版本,不确定更新的版本。
在routing.yml
中,您需要在requirements
下指定title
参数的预期格式,如下所示:
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: [/] }