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
slug
u (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/1
eshop/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.