Vlastny router – metoda match sa vola 2×
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Gaprielko
- Člen | 42
Zdravim, mam vytvoreny vlastny router pre vytvaranie rout z databazy +
dalsie routy. V bootstrap.php
to nastavujem takto:
<?php
$router = $container->router;
$router[] = $container->getService('pageRoute');
$router[] = new Route('<lang>/<presenter>/<action>', array(
'presenter' => 'Front:Page:Page',
'action' => 'default',
'lang' => 'sk'
));
?>
V config.neon
mam samozrejme nastavenu sluzbu
pageRoute
.
PageRoute:
<?php
class PageRoute implements IRouter {
public function match(IRequest $context) {
dump('nieco'); die();
return new Request(....);
}
public function constructUrl(Request $request, Url $context) {
...
}
}
?>
Vsetko funguje a zavola sa metoda match()
, problem je, ze sa
zavola 2x a vysledkom je takyto vypis:
"nieco"
"nieco"
- Filip Procházka
- Moderator | 4668
To není chyba. To je tvůj špatný návrh. Router by neměl spoléhat na
to, kolikrát zavoláš metodu match()
.
A kdybys chtěl vědět, jak je možné, že se to volá i po zavolání
die()
, tak to dělá routing debugger, který (doufám) nejde
vypnout. Ten debugger totiž kontroluje všechny routy a volá na všech
match()
.
Editoval HosipLan (9. 11. 2011 12:03)