2016-05-05 14 views
0

Da ich eine Route hatte, die entweder den Code oder die ID des Objekts akzeptieren muss, gibt es eine Möglichkeit in Silex, die ich erkennen kann, die an die Route (numerisch oder nicht numerisch) übergeben wurde und dann Sende entweder die eine oder die andere Variable?Silex Route austauschbare Parameter

Eg. /route/1 -> id für die USA auf der Datenbank

I $ id = 1 und $ code = null an die Steuerung

/route/US senden -> Code für die USA auf der Datenbank

ich sende $ id = null und $ code = 'US' an den Controller

ich habe versucht, so etwas wie dieses, aber es wird nicht funktionieren

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

Antwort

1

Wenn beide ID und Code leer sein, Sie kann m ake eine Route mit Standardwerten:

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

Wenn einer der Parameter sollten zwei Routen hinzufügen gefüllt werden:

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

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