2017-05-05 40 views
0

我有symfony tutorial玩弄,我想知道是否和如何我可以基於URL路徑給定的通配符的量使用不同的路由的路由Symfony2的要求。 這裏是我的路由YAML的代碼:定義基於一系列數字

app: 
resource: '@AppBundle/Controller/' 
type: annotation 

luckynumberSmallNumbers: 
    path:  /lucky/number/{max} 
    defaults: { _controller: AppBundle:Lucky:smallNumber, max: 10} 
    requirements: 
     max: \d+ #TODO: something to define numbers smaller or equal to 10 

luckynumberBigNumbers: 
    path:  /lucky/number/{max} 
    defaults: { _controller: AppBundle:Lucky:bigNumber, max: 10} 
    requirements: 
     max: \d+ #TODO: something to define numbers greater than 10 

所以如在我的例子路徑將是/幸運/數/ {MAX} 如果在{MAX}給出的數目大於10,另一種方法/控制器應該被稱爲比如果低於或等於數量爲〜10 如何能我在10的要求中定義這個?我只發現了限量表達,我不知道如何彎曲這些我的意願:) 在這裏找到我的回購:https://github.com/mattlang88/first_symfony_project

感謝一堆!

+0

你爲什麼不只是檢查控制器內的值,並採取不同的'如果($最大> 10){doThis(); } else {doThat(); }'?如果仍考慮用兩種路線,你可以使用正則表達式,比如'(10 | [0-9] {1})'或任何你的需求。 –

回答

3

要求是正則表達式(正則表達式),這樣你就可以有一個正則表達式像 ^ |爲第二個([0-9] 10)$

您可以定義一個正則表達式比10大的數字像這樣: ^ 0 *([1-9] \ d {2,} | 0 * [1-9] \ d)$

1

要求選項接受RegEx。所以用[1-10]你可以驗證針對一系列