Stejné routy s jiným parametrem – parametr se nepřenese
- admin@easyweb4u.cz
- Backer | 143
Ahoj,
mám dvě routy
<?php
adminRouter->addRoute('admin/<presenter>/<action>/<proc>/<userid>', [
'presenter' => 'Account',
'action' => 'default',
]);
adminRouter->addRoute('admin/<presenter>/<action>/<proc>/<langid>', [
'presenter' => 'Language',
'action' => 'default',
]);
?>
url je v obou případech ok, např.:
admin/account/default/4/8
a
admin/language/default/4/6
ale parametr langid se nepřenese, userid ano, pokud jsou routy v tomto pořadí. Co s tím?
Editoval admin@easyweb4u.cz (14. 1. 2020 13:16)
- Kamil Valenta
- Člen | 815
Protože to vždycky matchne ta první, jejímu patternu to odpovídá.
Buď tam přidej filtrační funkci, která rozhodne, zda je userid platné a
pokud ne, bude druhá routa hledat platné langid, nebo (pokud nemáš více
presenterů) je uveď explicitně:
adminRouter->addRoute('admin/account/<action>/<proc>/<userid>', [
'presenter' => 'Account',
'action' => 'default',
]);
adminRouter->addRoute('admin/language/<action>/<proc>/<langid>', [
'presenter' => 'Language',
'action' => 'default',
]);
Příp. se dá filtrovat i podle existujícího Presenteru. Těch možností je samozřejmě mnoho a záleží na velikosti projektu, někdy IMHO vyjmenování „natvrdo“ může být nejrychlejší.
Editoval kamil_v (14. 1. 2020 13:50)
- admin@easyweb4u.cz
- Backer | 143
kamil_v napsal(a):
Protože to vždycky matchne ta první, jejímu patternu to odpovídá.
Buď tam přidej filtrační funkci, která rozhodne, zda je userid platné a pokud ne, bude druhá routa hledat platné langid, nebo (pokud nemáš více presenterů) je uveď explicitně:adminRouter->addRoute('admin/account/<action>/<proc>/<userid>', [ 'presenter' => 'Account', 'action' => 'default', ]); adminRouter->addRoute('admin/language/<action>/<proc>/<langid>', [ 'presenter' => 'Language', 'action' => 'default', ]);
Příp. se dá filtrovat i podle existujícího Presenteru. Těch možností je samozřejmě mnoho a záleží na velikosti projektu, někdy IMHO vyjmenování „natvrdo“ může být nejrychlejší.
Jo jo, klidně natvrdo, s tím nemám problém. Jak jednoduché, díky.