2015-09-10 119 views
0

如果我这样定义一个路线:Symfony2的路由:如何不省略自动默认参数

search: 
    path:  /search/{country}/{xxx}-3-{xxxId}/{page}/{limit} 
    defaults: 
     _controller: SearchBundle:Search:index 
     page: 0 
     limit: 8 

将省略{PAGE}和{}限制α参数,如果它们与已过默认参数。

建设与页面的路线= 2和限价= 4将返回

/search/country/xxx-3-xxxId/2/4 

但当{限制}与8时,它会返回

/search/country/xxx-3-xxxId/2 

,而不是

/search/country/xxx-3-xxxId/2/8 

是他们的一种方式,以防止该参数将自动省略,如果他们等于其定义的默认值?

+2

只是不设置默认'limit',你为什么默认设置,如果你不需要它? – malcolm

+0

唯一的原因是让第一页的URL不带任何页面和限制为“/ search/country/xxx-3-xxxId”。但从第二页上应该总是页面,并总是在我看到的网址 – delete

+0

的限制,请检查我的答案。 – malcolm

回答

0

您可以定义多条到相同的动作:

search_main: 
    path: /search/{country}/{xxx}-3-{xxxId} 
    defaults: 
     _controller: SearchBundle:Search:index 

search: 
    path: /search/{country}/{xxx}-3-{xxxId}/{page}/{limit} 
    defaults: 
     _controller: SearchBundle:Search:index 

控制器:

public function indexAction($country, $xxx, $xxxId, $page = 0, $limit = 8) 
{ 
}