【发布时间】:2016-02-08 12:14:05
【问题描述】:
所以我有这条路线
path: /view/{category}-{subcategory}
我正在尝试在我的树枝中渲染这条路线
href="{{ path('my_route', {category: cat.slug, subcategory: sub.slug }) }}"
但是 symfony 向我抛出了这个错误
在渲染模板期间抛出异常(“路径“my_route”的参数“category”必须匹配“[^/-]++”(给定“food-cheap”))
当我设置真实参数时,它不应该自动生成- 字符吗?如果我将- 更改为/ 它可以工作,但我不想使用斜杠,因为它不是category 中的URI。
如果我使用它,它也可以工作
requirements:
category: ".*"
但是使用 slugs(因为它是重点)作为参数,太疯狂了。
例如
category: something
subcategory: super-size
URI 应该是 /view/something-super-size 但 Symfony2 这么说
category = something-super
和
subcategory = size
因为所有东西都有-,并且它不知道在正则表达式模式中停止在哪里。
我发现了一个奇怪的行为......
如果我手动输入网址
http://localhost/view/something-super-size
它正确地进入它的控制器,没有问题并且没有使用要求所以问题可能出在{{ path() }}方法...
【问题讨论】:
-
当然不是!生成路由路径由您决定。 Symfony 不会生成任何
-字符。您的正则表达式应该是:^\/view\/(\w+\-\w+)或只是/view/{slug}并在树枝中:path('my_route', {category: cat.slug ~ "-" ~ sub.slug }) -
使用我的答案,破折号是使用
path方法自动生成的。
标签: symfony