Více vyhovujících rout – priorita routy
- Extraneus
- Člen | 5
Dobrý den,
chtěl bych aby statické soubory (latte soubory ve StaticPresenteru) měly url
ve tvaru /staticky-soubor, /o-nas, apod. a zároveň abych měl co
nejjednodušší konfiguraci routeru, moje představa je takováto:
<?php
$router = new RouteList();
// staticke soubory
$router[] = new Route('/<action>', array(
'module' => 'Front',
'presenter' => 'Static'
));
// defaultni routa
$router[] = new Route('/<presenter>[/<action>][/<id>]', array(
'module' => 'Front',
'presenter' => 'Default',
'action' => 'default'
));
return $router;
?>
Jde nějak dosáhnout toho, aby se první routa použila pouze v případě že StaticPresenteru obsahuje odpovídající action a aplikace nekončila exceptionou Nette\Application\BadRequestException #404 v případě že se snažím dostat třeba na UserPresenter ve FrontModule (URL /user).
Díky
Radek
- Jan Tvrdík
- Nette guru | 2595
Pěkná otázka. Můžeš např. definovat v první routě filtry pro action
a vrátit NULL
pokud neexistuje odpovídající Latte soubor.
- Extraneus
- Člen | 5
Díky za odpověď :)
Filtr (FIlTER_TABLE + FILTER_STRICT) pro mě není řešením (ty statické latte šablony můžou přídávat redaktoři) a bez změny routru by to nefungovalo :( Takže jediné rozumné řešení je vytvořit si vlastní router který zkustí zjistit jestli šablona existuje nebo vrátí NULL?
P.S.: Nedalo by se něco takového co jsem chtěl v původním dotazu zaimplementovat do nějaké budoucí verze Nette? :)
- David Matějka
- Moderator | 6445
@JanTvrdík mel na mysli FILTER_IN, coz je funkce, ktera pokud vrati
NULL
, tak to zamitne routu