routa, 2 perzistentni nepovinne parametry

- simPod
 - Člen | 383
 
mam takovouhle routu pro eshop
$router[] = new Route('eshop/<action>[/<page>][/<slug>]', array(
            'module' => 'Front',
            'presenter' => 'Eshop',
            'action' => 'default',
            'page' => 1,
            'slug' => NULL
        ));
v prezenteru 2 perzistetni promenne:
/** @persistent */
public $slug;
/** @persistent */
public $page;
na strance s produkty ve strankovani nastavuji promennou page
({link 'this', page=>2})(adresa eshop/test/2)
z na te strance delam take odkazy na produkt slug
({link 'this', slug=>"riditka-na-kolo"}) (adresa
eshop/test/riditka-na-kolo)
avsak na te adrese s produktem (riditka-na-kolo) se te hodnote rovna
promenna $presenter->page a
ne $presenter->slug
jak je to mozny? vytvarim odkaz pres slug=>"riditka-na-kolo"
a ne pres page=>"riditka-na-kolo"
diky
Editoval simPod (6. 5. 2012 20:48)

- Vojtěch Dobeš
 - Gold Partner | 1316
 
Routa eshop/<action>[/<page>][/<slug>] staví
oba nepovinné parametry na stejnou úroveň. Abys docílil správné pozice
slugu (jak ji dozajista zamýšlíš), tak musíš uvést parametry
oba. Aby tě na to Nette upozornilo, může routu přepsat následovně:
eshop/<action>[/<page>[/<slug>]].

- Vojtěch Dobeš
 - Gold Partner | 1316
 
Je to o návrhu té URL. Přijdou ti dva požadavky zvenčí:
eshop/test/1eshop/test/riditka-na-kolo
Jak rozeznáš, jestli je to $page nebo $slug?
Řešením by bylo rozhodovat to podle té hodnoty, třeba že vše je
$slug, ale pokud je to číslo, tak je to $page.
Nevím, jestli to jde udělat pomocí objektu Route (možná ano,
opravdu nevím), každopádně by to šlo řešit pomocí vlastního
routeru.