我想使用单一路由模式构建以下URI
1 hello/first.format
2 hello/first
3 hello/first/last.format
4 hello/first/last
其中第一是必需的,最后和格式是可选的。
这就是我的尝试:
hello-route:
pattern: /hello/{fist_name}/{last_name}.{_format}
defaults: { _controller: AcmeHelloBundle:Default:index, last_name:Default, _format:html}
requirements:
_format: html|rss|json
first_name: \w+
last_name: \w+
但不正确,因为它匹配2,3和4而不是1. 1不会失败,但它会将{first_name}与“first.format”匹配,尽管有要求。
如何使用基本路由执行此操作?
答案 0 :(得分:1)
定义两条路线来完成此任务
hello-route-first:
pattern: /hello/{fist_name}.{_format}
defaults: { _controller: AcmeHelloBundle:Default:index, _format:html}
requirements:
_format: html|rss|json
first_name: \w+
hello-route-last:
pattern: /hello/{fist_name}/{last_name}.{_format}
defaults: { _controller: AcmeHelloBundle:Default:index, _format:html}
requirements:
_format: html|rss|json
first_name: \w+
last_name: \w+
然后在控制器中使$ last_name参数可选
function indexAction($first_name, $last_name = "")
{