Zase to routovani

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
TomasTB
Člen | 13
+
0
-

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.

LM
Člen | 206
+
0
-

Co ten router cachovat? což by mělo ušetřit kompilaci masky při každým požadavku, ale na tohle by asi bylo lepší napsat router svůj nebo přizpůsobit Route.

TomasTB
Člen | 13
+
0
-

Zatim to dopadlo tak, ze si vyrabim vlastni router aspon pro tu cast s filtrama … jinak to asi necham jak je

David Grudl
Nette Core | 8218
+
0
-

Počet rout na rychlost vliv má, zejména při generování odkazů.