2016-05-05 49 views
0

鑑於我有一個路由必須接受對象的代碼或ID,是否有任何方式在我可以檢測到傳遞到路由(數字或非數字),然後發送一個變量或其他?Silex路由可互換參數

例如, /路由/ 1 - > ID爲USA數據庫

我送的$ id = 1和$代碼= null來控制

/路由/ US關於 - >爲美國代碼數據庫

我送的$ id = null,並且$代碼=「美國」到控制器

我想這樣的事情,但它不會工作

$apiRoutesV2 
    ->get('/route/{code}{id}', 'controllers.myController:getIndex') 
    ->value('id', null) 
    ->assert('id', '[0-9]+') 
    ->value('code', null) 
    ->assert('code', '[a-zA-Z]+'); 

回答

1

如果這兩個ID和密碼可以是空的,你可以m使用默認值AKE一個路線:

$app 
    ->get('/route/{code}{id}', 'controllers.myController:getIndex') 
    ->value('id', '') 
    ->assert('id', '[0-9]*') 
    ->value('code', '') 
    ->assert('code', '[a-zA-Z]*'); 

如果一個參數應該填加2條路線:

$app 
    ->get('/route/{id}', 'controllers.myController:getIndex') 
    ->assert('id', '[0-9]+'); 

$app 
    ->get('/route/{code}', 'controllers.myController:getIndex') 
    ->assert('code', '[a-zA-Z]+');