在我的Symfony2应用程序中,我想用一条路线制作四个网址:
我的路线目前看起来像这样:
report:
pattern: /report/{days}
defaults: { _controller: "AppReportBundle:Report:dayReport", days = null }
该行动定义为:
public function dayReportAction($days = null)
{
// my code here
}
这目前使网址1和2正常工作,但在网址3和4的情况下,我收到错误
未找到路线
如何使参数“days”可选?
如果没有提供参数,我怎么能同时省略/
?
答案 0 :(得分:14)
这是一种方法
的的routing.yml 强>
report:
pattern: /report/{days}
defaults: { _controller: "AppReportBundle:Report:dayReport", days: null }
requirements:
days: -?\d+
report_reroute:
pattern: /report/
defaults:
_controller: FrameworkBundle:Redirect:redirect
route: report
permanent: true
由于需求是正则表达式模式,因此您可以使用负数。
重新路由部分强制路由/report/
重定向到/report
您可以阅读以下内容: Cookbok Entry - Elnur's Answer
有了这样的行为,你就会:
Route | Action | Parameters
------------|------------------------|-------------
/report | dayReportAction | $days = null
/report/ | 301 to /report |
/report/60 | dayReportAction | $days = 60
/report/-4 | dayReportAction | $days = -4
/report/foo | 404 |