Nesmyslné přepisování parametrů
- TheKronnY
- Člen | 22
Zdravím,
mám problém s routami, řekl bych, že je mám správně, ale Nette to chápe asi trošku jinak.. Mám následující routy v tomto pořadí:
$router[] = new Route('api/<presenter>/<action>[/<auth_key>]', array(
'module' => 'Api',
'presenter' => 'Home',
'action' => 'default'
));
$router[] = new Route('api/<presenter>/<action>', array(
'module' => 'Api',
'presenter' => 'Home',
'action' => 'default'
));
Při requestu na
https://domena.cz/api/payments/notify-gate/asd123
vše funguje.
Při requestu na
https://domena.cz/api/payments/notify-gate?auth_key=asd123
voláním $this->getParameter('auth_key')
dostanu zpět
null
. Routy se mají deklarovat od specifických po obecné, takže
předpokládám, že toto je správné pořadí.
Předem díky za odpovědi,
TheKronnY
Editoval TheKronnY (28. 5. 2016 12:33)
- David Grudl
- Nette Core | 8282
Pohledem do routing debuggeru zjistíš, že se (předpokládám) používá
jen první routa a ta druhá je zbytečná. A pokud v cestě není uveden
auth_key
, jeho hodnota je null, auth_key
ve query se
ignoruje.
Pokud chceš, aby se používaly obě routy, tak je nějak odliš. Třeba že
v té první bude auth_key
povinný.
- TheKronnY
- Člen | 22
David Grudl napsal(a):
Pohledem do routing debuggeru zjistíš, že se (předpokládám) používá jen první routa a ta druhá je zbytečná. A pokud v cestě není uveden
auth_key
, jeho hodnota je null,auth_key
ve query se ignoruje.Pokud chceš, aby se používaly obě routy, tak je nějak odliš. Třeba že v té první bude
auth_key
povinný.
Nojo, já jsem pablb :D Omlouvám se, vůbec jsem si neuvědomil že když je
to vlastně optional tak že ta druhá je navíc :D Oboum jsem dal
Route::ONE_WAY
a to taky pomohlo :D
EDIT: Mno nastavil jsem ten <auth_key>
na required
v jedné routě, musel jsem však stejně oboum nechat
Route::ONE_WAY
, protože při použití
...?auth_key=...
to routovalo na tu specifičtější (což je
správně), ale když se dělá request na API, tak při 301
to
z druhé strany ukončí..
Editoval TheKronnY (28. 5. 2016 12:49)