2013-04-01 59 views
0

我想建造URI的使用單個路由模式Symfony2的路由可選參數和格式的路徑/圖案

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「第一.format「儘管要求。

我該如何使用基本路由來做到這一點?

回答

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+ 

然後使$姓氏參數可選在控制器

function indexAction($first_name, $last_name = "") 
    {