Předání parametru na základě názvu Route
- Allconius
- Člen | 313
Ahoj, jde předat parametr do presenteru na základě názvu v route ? tzn. pokud je url /web/jedna/ aby se do Home předal parametr 1, /web/dve/ parametr 2 atd. ?
$router->addRoute('/web/jedna/', 'Home:menu');
$router->addRoute('/web/dve/', 'Home:menu');
$router->addRoute('/web/tri/', 'Home:menu');
nebo si jedině detekovat URL ($_SERVER[‚REQUEST_URI‘]) a zobrazovat podle toho ?
Editoval Allconius (16. 1. 11:56)
- Šaman
- Člen | 2635
To by mělo jít udělat přes routovací
filtry, případně přes obecné
filtry
Budeš si muset rozmyslet, jestli to chceš i pro generování adres (tedy že
parametr se přeloží na /jedna
), nebo to jen akceptovat na
vstupu, pak si póřešíš jen FilterIn
.
Edit: Resp možná by stačilo něco takového:
$router->addRoute('/web/jedna', [
'presenter' => 'Home',
'action' => 'menu',
'parametr' => 1,
]);
Editoval Šaman (16. 1. 12:12)
- Allconius
- Člen | 313
Šaman napsal(a):
To by mělo jít udělat přes routovací filtry, případně přes obecné filtry
Budeš si muset rozmyslet, jestli to chceš i pro generování adres (tedy že parametr se přeloží na/jedna
), nebo to jen akceptovat na vstupu, pak si póřešíš jenFilterIn
.Edit: Resp možná by stačilo něco takového:
$router->addRoute('/web/jedna', [ 'presenter' => 'Home', 'action' => 'menu', 'parametr' => 1, ]);
Ahoj, super, to je ono zrovna jsem to taky vygooglil, díky moc :-)
- Šaman
- Člen | 2635
A pokud bys chtěl všechny adresy /web
na
Home:menu
, tak:
$router->addRoute('/web/<parametr>', 'Home:menu');
Akorát že parametr
bude slovně jedna
a budeš si
to muset přeložit v presenteru.
Záleží, jestli jich bude několik málo a pro každý parametr se ti vyplatí
vlastní routa, nebo radši předat parametr do presentery a tam se teprve
rozhodnout jakou stránku zobrazit, případně přesměrovat na 404, pokud bude
parametr nesmyslný.
Editoval Šaman (16. 1. 12:15)
- Allconius
- Člen | 313
Allconius napsal(a):
Šaman napsal(a):
To by mělo jít udělat přes routovací filtry, případně přes obecné filtry
Budeš si muset rozmyslet, jestli to chceš i pro generování adres (tedy že parametr se přeloží na/jedna
), nebo to jen akceptovat na vstupu, pak si póřešíš jenFilterIn
.Edit: Resp možná by stačilo něco takového:
$router->addRoute('/web/jedna', [ 'presenter' => 'Home', 'action' => 'menu', 'parametr' => 1, ]);
Ahoj, super, to je ono zrovna jsem to taky vygooglil, díky moc :-)
jak pak dostanu ten parametr do presenteru pokud mám:
public function renderMenu(): void
{
$data = $this->articlesData($parametr);
}
- Allconius
- Člen | 313
Šaman napsal(a):
A pokud bys chtěl všechny adresy
/web
naHome:menu
, tak:$router->addRoute('/web/<parametr>', 'Home:menu');
Akorát že
parametr
bude slovnějedna
a budeš si to muset přeložit v presenteru.
Záleží, jestli jich bude několik málo a pro každý parametr se ti vyplatí vlastní routa, nebo radši předat parametr do presentery a tam se teprve rozhodnout jakou stránku zobrazit, případně přesměrovat na 404, pokud bude parametr nesmyslný.
chci to načítat dynamicky z DB to menu podle toho příkladu zde: https://forum.nette.org/…y-z-database
a předat do presenteru parametr na základě té url adresy
akorát nevím jak pak dostanu ten parametr do presenteru pokud mám:
public function renderMenu(): void
{
$data = $this->articlesData($parametr);
}
Editoval Allconius (16. 1. 12:29)