Přesměrování ven z jakékoliv URL
- tomlp79
- Člen | 23
Zdravim,
chtel bych udelat v route presmerovani na externi URL. Co jsem se tu docetl,
lze pouzit micropresenter. Problem mam ze nevim jak napsat routu tak, aby mi do
ni padalo jakekoliv url. Tedy neco takoveho:
<?php
$router[] = new Route('cokoliv', function ($presenter) {
//... najdu co kam presmerovat
return $presenter->redirectUrl($url);
});
?>
Diky za rady.
- Barbarossa
- Člen | 74
Nechal bych tu masku prázdnou, pokud tam není definována jiná routa. Spíše bych ale volil postup, kdy budeš ty masky využívat (s využitím reg výrazů si nadefinuješ různé parametry URL apod).
<?php
$router[] = new Route('', function ($presenter) {
$request = $presenter->getRequest(); // https://doc.nette.org/cs/http/request#toc-http-pozadavek
return $presenter->redirectUrl($url);
});
?>
- tomlp79
- Člen | 23
To ale nefunguje :) zadna url tam neprojde. Radeji upresnim o co mi jde. Mam
v db tabulku presmerovani stara ⇒ nova url. Stara url pritom muze mit
jakykoliv tvar a nova zrovna tak.
Nejdriv jsem myslel ze udelam nejakou routerFactory ktera implementuje IRoute a
v metode match to vsechno poresim… pak jsem ale narazil na to ze match ma
vracet application request kde prvni parameter je presenter. Ten ja ale obecne
neznam, protoze, jak uz jsem psal, nova url muze mit jakykoliv tvar, i externi
url napr.
diky.
- David Matějka
- Moderator | 6445
muzes vratit request na ten micro presenter, viz https://api.nette.org/…ute.php.html#132
- David Matějka
- Moderator | 6445
Ano, Nette\Application\Request. jako name
tam dej
Nette:Micro
a do parametru dej jeden parameter
callback
se stejnou closure, co mas v tom prvnim prispevku