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
+
0
-

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
+
0
-

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)