cachování routeru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- xTrip
- Člen | 15
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)