$router = new Router; // pomocí addRoute nadefinujeme používané routy $router->addRoute('/:controller/:action/:?id'); $router->addRoute('/:controller/:?action', array('action' => 'default')); // určíme, jak se vytvoří jméno kontroleru a metody $router->setCallbackMask('<controller>Controller:<action>'); // nastavíme kontroler pro případné chybové stavy $router->setErrorCallback('ErrorController:index'); // předáme routeru aktuální URL, vrátí nám ji rozebranou na jednotlivé části $params = $router->parseUrl($_GET['route']); // a pak předáme řízení. Router sám určí kontroler i metodu. $router->delegate();
Update: Nová verze routeru je připravená, brzy se zde objeví.
Hlavní změny, které přinese:
- všechny URL vytvářené routerem budou URL-enkódované
- do URL šablon bude možné dosazovat libovolný počet různých hodnot
- v případě chyby nebude router vyvolávat E_USER_WARNING, ale házet výjimky
- u přesměrovávaných cest bude možné zadat cílovou adresu i jako řetězec
Všechny požadavky se přesměrovávají na index.php jako URL parametr route (např. index.php?route=/clanek/detail/1234). Pokud chcete používat jiný název parametru, nastavíte ho metodou setRouteKey().
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=/$1 [L,QSA]
© 2012, Tori <admin@vize.name>