Aplikace filtru (FilterRoute) i u jiných rout?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- uestla
- Backer | 799
Pěkný pozdní večer.
Ve své aplikaci používám HosipLanův FilterRoute (přepsaný na nové namespaces), konkrétně následující pravidla:
use \Kdyby\Application\Routers\FilterRoute;
$defLang = 'cs';
// spec. routa
$route = $router[] = new FilterRoute('[<lang=' . $defLang . '>/]unique-part/<id [a-z0-9-]+>', 'TypePresenter:details');
$route->addFilter('id', 'Model::slugToId', 'Model::idToSlug');
// obecná routa
$router[] = new Route('[<lang=' . $defLang . '>/]<presenter>/<action>/[<id [1-9][0-9]*>/]', 'Homepage:default');
Na TypePresenter:details
s předaným $id
se
odkazy generují zcela v pořádku. Problém nastává, když chci odkázat na
jinou akci – konkrétně TypePresenter:edit
– a rovněž
předám parametr $id
.
Nějakým způsobem dojde k „přeložení“ 'id'
na základě
pravidel u spec. routy (ačkoli by se mělo převádět podle routy obecné),
tzn. v dané metodě modelu se z ID vytvoří požadovaný slug.
Kvůli tomu, že takto přeložený parametr id
nevyhovuje masce
u obecné routy, se jedn. parametry seřadí do klasické query URL (díky
nejspodněji použitému SimpleRouter
u).
Dělám někde chybu? Předem děkuji za odpověď.