Silex路由互换参数
Silex route interchangeable parameters
考虑到我有一条路线必须接受对象的代码或 ID,在 silex 中有没有什么方法可以检测到传递给路线的(数字或非数字)然后发送一个变量还是另一个?
例如。
/route/1 -> 数据库中美国的 ID
我向控制器发送 $id = 1 和 $code = null
/route/US -> 数据库中美国的代码
我向控制器发送 $id = null 和 $code = 'US'
我试过类似的方法,但行不通
$apiRoutesV2
->get('/route/{code}{id}', 'controllers.myController:getIndex')
->value('id', null)
->assert('id', '[0-9]+')
->value('code', null)
->assert('code', '[a-zA-Z]+');
如果id和code都可以为空,可以做一个默认值的路由:
$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]+');
考虑到我有一条路线必须接受对象的代码或 ID,在 silex 中有没有什么方法可以检测到传递给路线的(数字或非数字)然后发送一个变量还是另一个?
例如。 /route/1 -> 数据库中美国的 ID
我向控制器发送 $id = 1 和 $code = null
/route/US -> 数据库中美国的代码
我向控制器发送 $id = null 和 $code = 'US'
我试过类似的方法,但行不通
$apiRoutesV2
->get('/route/{code}{id}', 'controllers.myController:getIndex')
->value('id', null)
->assert('id', '[0-9]+')
->value('code', null)
->assert('code', '[a-zA-Z]+');
如果id和code都可以为空,可以做一个默认值的路由:
$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]+');