cachování routeru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
xTrip
Člen | 15
+
0
-

zdravím,
ve skelotonu se routování nastavuje přímo v bootstrapu. Nicméně spíše bych uvítal routování v konfiguračním souboru a celý router si cachoval. Řešení, které jsem zatím umístil přímo v bootstrapu je takovéto:

	// Step 4: Setup application routes
	$cache = Environment::getCache('Nette.Routing');
	//$cache['router'] = NULL;
$router = $cache['router'];

if($router instanceof IRouter) {
  $application->setRouter($router);
}
else {
	$router = $application->getRouter();
	$routingFile = Environment::expand($config->routing);
	$routing = /*Nette\Config\*/Config::fromFile($routingFile, Environment::getName());

	foreach($routing AS $route) {
		$mask = $route->mask;
		$defaults = $route->defaults->toArray();
		$flags = NULL;
		if(preg_match('/one.*way/i', $route->flags)) {
		  $flags =  Route::ONE_WAY;
		}
	  	if(preg_match('/secured/i', $route->flags)) {
      	  $flags = $flags ? $flags | Route::SECURED : Route::SECURED;
    		}
	  	$router[] = new Route($mask, $defaults, $flags);
	}
	$cache['router'] = $router;
}

Zdá se mi to trochu komplikované. Nemáte někdo nějaké pěknější řešení?

Editoval xTrip (22. 11. 2008 18:08)