Router

Povolené znaky pro jednotlivé části routy

Pro každou část routy můžeme určit, jaké znaky smí obsahovat. Povolená hodnota se zapisuje hned za název části a je uzavřená ostrými závorkami (např. :název<hodnota>). Abychom nemuseli psát [a-zA-Z], stačí použít modifikátor Route::CI, který určuje, že tato routa nebude rozlišovat velikost písmen (ve výchozím nastavení je rozlišuje).

// první část URL musí obsahovat text "blog", velikost písmen se nerozlišuje
$router->addRoute('/:controller<blog>/:action', array(), Route::CI);

// pro ID budeme chtít použít jen číslice:
$router->addRoute('/:controller/:action/:id<[0-9]+>');
    
// totéž jako předchozí, ale místo množiny znaků použijeme sekvenci "\d".
$router->addRoute('/:controller/:action/:id<\\d+>');
    
// nepovinný dvojpísmenný kód jazyka na začátku adresy, s výchozí hodnotou cs (čeština):
$router->addRoute('/:?lang<[a-z]{2}>/:controller/:action', array('lang' => 'cs'));

Pokud neuvedeme povolenou hodnotu, použije se výchozí regulár ([A-Za-z0-9_.-]+), tedy alespoň jeden znak z množiny {písmena bez diakritiky, číslice, tečka, pomlčka a podtržítko}.

NB: Router používá Perl-kompatibilní regulární výrazy (PCRE), více informací o syntaxi, metaznacích apod. najdete např. na webu www.regularnivyrazy.info.

Pořadí pravidel

Když Router hledá odpovídají routu, podle které rozebere URL požadavku, prochází routy v pořadí, jak byly definované a zastaví se na první vyhovující. Je tedy vhodné je definovat od specifických k obecnějším.

Poslední aktualizace: 24. 6. 2012 15:54