Routování signálů s parametrem
- suxik
- Člen | 62
Ahoj borci,
potřeboval bych poradit s nastavením routy. Mám presenter s mapou a
filtruju v ní objekty pomocí signálů (např. handleKraj($district)). Nevím
jak nastavit, aby se mi routovalo
localhost/test/mista/?district=Praha&do=kraj
na
localhost/test/mista/kraj/Praha
podobně
localhost/test/mista/?state=cz&do=stat
na
localhost/test/mista/stat/cz
Implementaci předělávat nebudu, potřebuju jen udělat ty routy. Když udělám více rout
<?php
$router[] = new NRoute('mista/<do>/<state>', 'mista:default');
$router[] = new NRoute('mista/<do>/<district>', 'mista:default');
$router[] = new NRoute('mista/<do>/<city>', 'mista:default');
?>
Tak se to hádá a pořád to bere tu první, když zkouším udělat vše jednou routou, což by podle mě mělo jít
<?php
$router[] = new NRoute('mista/<do>/<?>', 'mista:default');
?>
tak se vrátí
localhost/test/mista/kategorie/?category=1
a já potřebuju
localhost/test/mista/kategorie/1
už fakt nevím…
Editoval suxik (17. 3. 2012 13:57)
- Tomáš Votruba
- Moderator | 1114
Zkus nastavit jako nepovinné parametry:
<?php
$router[] = new NRoute('mista/[<do stat>/<state>/][<do kraj>/<district>/][<do mesto>/<city>/]', 'mista:default');
?>
- duke
- Člen | 650
@Schmutzka Obávám se, že takovéto konstrukce nefungují.
@suxik Do jedné routy to dostaneš při použití výchozí routovací třídy jen tak, že sjednotíš název cílového parametru, např. takto:
$router[] = new NRoute('mista/<do stat|kraj|mesto>/<target>', 'mista:default');
Pokud potřebuješ zachovat rozlišení názvu onoho parametru, pak si budeš muset napsat vlastní routovací třídu.