【发布时间】:2016-12-10 18:32:54
【问题描述】:
我有两条路线:
// routing.yml
foo_list:
path: /foo
defaults: { _controller:MyBundle:Foo:index }
foo_view:
path: /foo/{id}
defaults:
_controller: AlfnooBundle:Exploitant:view
id : 1
requirements:
id: \d*
第一个是列出所有 foo 的页面,第二个是显示 foo n 详细视图的页面。 {ID}。在我的 Twig 视图中,我生成了指向 foo_view 的链接,如下所示:
{{path('foo_view', {'id': foo.id})}}
如果id 不是1(默认值)也没关系:/foo/12345。但是如果id是1,path()方法会生成一个错误的url,它会省略id参数,生成的路由是:/foo。不是foo_view,而是foo_list。如果我更改默认值,问题出在默认值上。
{{path('foo_view', {'id': 1})}} => /foo => BAD ! I want /foo/1
{{path('foo_view', {'id': 123})}} => /foo/123 => GOOD
那么我怎样才能强制 Twig path() 方法总是添加参数值,即使它是默认值?我想保留以下网址:
/foo => foo_list
/foo/ => foo_view with id=1
/foo/12345 => foo_view with id=12345
谢谢。
【问题讨论】:
-
为什么不删除这个 id 的默认值?
-
@DOZ 因为我想要对 url
/foo和 url/foo/进行不同的操作,并保持/foo/没有 id 有效(默认为 1)。 -
让需求,并删除默认...
-
正如@Alsatian 所说:)
-
@Alsatian 我的默认值呢?我在控制器中管理它?这对我来说似乎并不优雅:)