所以我有这条路线
path: /view/{category}-{subcategory}
我试图在我的树枝上渲染这条路线
href="{{ path('my_route', {category: cat.slug, subcategory: sub.slug }) }}"
但是symfony给我这个错误
在渲染模板期间抛出异常("参数"类别"对于路线" my_route"必须匹配" [^ / - ] + +"("食物便宜"给予)
当我设置真实参数时,是不是自动生成-
字符?如果我将-
更改为/
它可以使用,但我不想使用斜杠,因为它不是category
内的URI。
如果我使用此
,它也会起作用 requirements:
category: ".*"
但是对于参数使用slu((因为它的重点),会发疯。
例如
category: something
subcategory: super-size
URI将为/view/something-super-size
,但Symfony2表示
category = something-super
和
subcategory = size
因为所有内容都有-
,并且它不知道在正则表达式模式中停止的位置。
我发现了一种奇怪的行为......
如果我手动输入网址
http://localhost/view/something-super-size
它正确地连接到它的控制器,没有问题,没有使用要求所以可能问题出在{{ path() }}
方法......
答案 0 :(得分:0)
要使您的路线使用短划线作为分段分隔符,请按以下方式声明您的路线:
my_route:
path: /view/{category}-{subcategory}
defaults:
_controller: YourBundle:Controller:method
requirements:
category: "[a-zA-Z1-9\-_\/]+"
现在,当使用
时,短划线将自动添加到你的参数之间
href="{{ path('my_route', {category: cat.slug, subcategory: sub.slug }) }}"
修改强>
更准确地说,使用给定的正则表达式,短划线将被视为uri段分隔符,并且不会成为参数的一部分。
参数完整(不包含-
),当您使用path
方法生成网址时,-
将自动添加到参数之间。正则表达式使其正常工作。