2012-11-06 28 views
2

我有路线:/user/username/{username}.{_format}username可以有任何符号。 例如,所有的如下将是有效的:如何在Symfony 2中描述具有复杂参数的路线

等等...

username每个部分可以有任何字符...

而且_format是可选的字符串如jsonxml ...

我怎样才能形容它在我路由规则?

在现在我有这样的:

MyBundle_getUserByUsername: 
    pattern: /user/username/{username} 
    defaults: { _controller: MyBundle:User:getUserByUsername, _format: json } 
    requirements: 
     _method: GET 
     username: ".+" 

但它不是那么有用,因为它可能是。我不能指定format参数...

我需要你的帮助家伙...

回答

1
MyBundle_getUserByUsername: 
    pattern: /user/username/{username}.{_format} 
    defaults: { _controller: MyBundle:User:getUserByUsername, _format:json} 
    requirements: 
     _method: GET 
     username: ".+(?<=.)" 
+0

这不是Symfony的,它是所有关于正则表达式。你只需要定义一个路线来执行下一个模式:“/^\/user\/username\/(.+?)((..json|html)?$/” –

0

使用lazy quantificator

MyBundle_getUserByUsername: 
    pattern: /user/username/{username}.{_format} 
    defaults: { _controller: MyBundle:User:getUserByUsername, _format: json } 
    requirements: 
     username: ".+?" 
     _method: GET 
     _format: html|json 
+0

如果用户名是'user.name @ example.com'就像问题一样。 –

+0

它适合我。显示结果路线定义。另外,我用完整的路线定义更新了我的答案,检查出来,也许你错过了一些东西。 –