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