簡體   English   中英

Symfony2中的路由:可選參數zh一個路由的四個URL

[英]Routing in Symfony2: optional parameter en four urls for one route

在我的Symfony2應用程序中,我想用一條路線制作四個網址:

  1. 很多其他東西/報告/ -20 (負數)
  2. 很多其他東西/報告/ 40 (正數)
  3. 很多其他的東西/報告/ (沒有號碼)
  4. 很多其他東西/報告(沒有數字,沒有/)

我的路線目前看起來像這樣:

report:
    pattern:  /report/{days}
    defaults: { _controller: "AppReportBundle:Report:dayReport", days = null }

該行動定義為:

public function dayReportAction($days = null)
{
    // my code here
}

這當前使url 1和2工作,但在url 3和4的情況下,我收到錯誤

路線未找到

如何使參數“days”可選?
如果沒有提供參數,我怎么能同時省略/

這是一種方法

使用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的答案

有了這樣的行為,你會有:

Route       | Action                 | Parameters
------------|------------------------|-------------
/report     | dayReportAction        | $days = null
/report/    | 301 to /report         |
/report/60  | dayReportAction        | $days = 60
/report/-4  | dayReportAction        | $days = -4
/report/foo | 404                    |

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM