Zase to routovani
- TomasTB
- Člen | 13
Ma nejaky vetsi vyznam na rychlost pouziti velkeho poctu rout?
Delam na projektu kam bude smerovat vice domen, na kazde domene budou
dovoleny urcite jazyky. Vsech jazyku bude 20+.
Na jedne domene predpokladame maximalne 4–5 jazyku tj. 5 × 5 +
3(administrace) 28 rout. Nenapadne nekoho jine elegantnejsi reseni?
Dalsim problemem jsou filtry … viz priklad dale. Filtrujeme produkty napr
podle prvniho, druheho id a podle „options“ u produktu. Budou maximalne 3,
takze tohle reseni funguje, ale moc se me nelibi a ani se me nelibi jak se musi
zpracovavat $preseneter->params;
Pozadavky jsou nasledujici: nazev filtru – v kazdem jazyce jiny, stejne tak
text hodnoty. Je potreba zachovat nezavisle poradi fitru oznaceni 312 je stejne
jako kdyz oznacim 231, mam oznacene 3 vymazu z url prostredni a musi
to jet.
$rout = array(
'cs' => array(
'o-nas' => array('lang' => 'cs', 'presenter' => 'Default', 'action' => 'about', ),
'napoveda' => array('lang' => 'cs', 'presenter' => 'Default', 'action' => 'help',),
'cs' => array('lang' => 'cs','presenter' => 'Product','action' => 'default',),
'filtr/<name0>_<text0>_<val0 [0-9]+>/<name1>_<text1>_<val1 [0-9]+>/<name2>_<text2>_<val2 [0-9]+>'
=> array(
'lang' => 'cs', 'presenter' => 'Products', 'action' => 'filtered',
'name1' => NULL,
'text1' => NULL,
'val1' => NULL,
'name2' => NULL,
'text2' => NULL,
'val2' => NULL,
),
'detail-produktu-<text>-<a [0-9]+>-<b [0-9]+>' => array(
'lang' => 'cs', 'presenter' => 'Flight', 'action' => 'detail',
),
),
'en' => array(
'about' => array('lang' => 'en','presenter' => 'Default','action' => 'about',),
'help' => array('lang' => 'en', 'presenter' => 'Default', 'action' => 'help',),
'' => array('lang' => 'en', 'presenter' => 'Product', 'action' => 'default',),
'filter/<name0>_<text0>_<val0 [0-9]+>/<name1>_<text1>_<val1 [0-9]+>/<name2>_<text2>_<val2 [0-9]+>'
=> array(
'lang' => 'en', 'presenter' => 'Product', 'action' => 'filtered',
'name1' => NULL,
'text1' => NULL,
'val1' => NULL,
'name2' => NULL,
'text2' => NULL,
'val2' => NULL,
),
'product-detail-<text>-<a [0-9]+>-<b [0-9]+>' => array(
'lang' => 'en', 'presenter' => 'Flight', 'action' => 'detail',
),
),
);
foreach($povoleneJazyky AS $l){
foreach($rout[$l] AS $k => $v){
$router[] = new Route($k,$v);
}
}
Kod je tak trochu zkompaktnen aby to nebylo na 20 stranek tak sry za horsi citelnost mene podstatnych casti.