我有这样的路线。
acme_apiByDate_homepage:
pattern: /api/byDate/{date}/{page}/{limit}
defaults: { _controller: AcmeTopBundle:Api:byDate,date:"",page:0,limit:50, _format: xml }
普通网址就像这样
/ API / byDate / 2013年4月12日/ 0/40
但有时我想省略日期。
但是,这显示错误
/ API / byDate // 0/40
我知道我可以省略最后一个参数,但我想省略中间参数。
我该怎么做?
答案 0 :(得分:2)
您可以更改路线参数:
acme_apiByDate_homepage:
pattern: /api/byDate/{page}/{limit}/{date}
defaults: { _controller: AcmeTopBundle:Api:byDate, page:0, limit:50, date: null, _format: xml }
并添加到您的控制器中:
byDateAction($page, $limit, $date = null)
{
}
如果路由和控制器的null不起作用,请尝试空字符串。
<强>更新强>:
您还可以为同一操作定义更多路线,例如:
api_data_by_date:
pattern: /api/byDate/{date}/{page}/{limit}
defaults: { _controller: AcmeTopBundle:Api:getData, page:0, limit:50, date: null, _format: xml }
api_data_by_page:
pattern: /api/byPage/{page}/{date}/{limit}
defaults: { _controller: AcmeTopBundle:Api:getData, page:0, limit:50, date: null, _format: xml }
api_data_by_limit:
pattern: /api/byLimit/{limit}/{page}/{date}
defaults: { _controller: AcmeTopBundle:Api:getData, page:0, limit:50, date: null, _format: xml }
或者,您可以添加一些参数要求,例如:
api_data_by_date:
pattern: /api/getData/{date}/{limit}/{page}
defaults: { _controller: AcmeTopBundle:Api:getData, page:0, limit:50, date: 2013-04-12, _format: xml }
requirements:
date: [0-9]{4}\-[0-9]{2}\-[0-9]{2}
page: \d+
limit: \d+
或尝试:
api_data_by_date:
pattern: /api-d-{date}-l-{limit}-p-{page}
defaults: { _controller: AcmeTopBundle:Api:getData, page:0, limit:50, date: 2013-04-12, _format: xml }
requirements:
date: [0-9]{4}\-[0-9]{2}\-[0-9]{2}
page: \d+
limit: \d+