Změnit presenter podle parametru
- double
- Člen | 14
Zdravím,
rád bych poprosil moudřejší o názor, resp. návod na řešení.
Potřebuji mít adresu ve tvaru
\o-nas
\kategorie
\kategorie\produkt
Je jasné, že z tohohle nemám šanci poznat, jaký se má použít
presenter. Callback u ROUTE::VALUE použít nemůžu a asi největší chybu
vidím v tom, že mi nette vrací vyjímku Missing presenter in route
definition
Proč? Kdyby vracel prostě NULL, pak by se použila další routa a já bych
měl problém vyřešen.
Něco ve stylu, kde bych si vytvořil překladovou tabulku a vrátil vždy presenter. Pokud by se nenašel, výsledek by byl null a použil by se klasický router
<?php
$router[] = new Route('[<url>]', array(
'module' => 'Front',
'presenter' => array(
Route::FILTER_IN => callback($seoRouter, "getOne"),
Route::FILTER_OUT => callback($seoRouter, "getTwo")
),
'action' => 'default',
'id' => NULL,
));
$router[] = new Route('<presenter>/<action>[/<url>]', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
?>
Díky všem za nápady, jak o řešit
- jtousek
- Člen | 951
Nestačilo by odchytat ty adresy typu o-nas pomocí FILTER_TABLE a FILTER_STRICT a vše ostatní poslat na CategoryPresenter?
- double
- Člen | 14
Díky, toho jsem se bál – jde mi o rychlost a presenterů může být časem dost. Tak nejspíš podědím Router a stop tabulku dám do match.
Pokud by někdo někdy hledal řešení, tak v action to není, je to skutečně v presenteru
<?php
$router[] = new Route('<url>', array(
'module' => 'Front',
'presenter' => array(
Route::VALUE => 'Text',
Route::FILTER_TABLE => array(
'o-nas' => 'Text'
),
Route::FILTER_STRICT => TRUE
),
'action' => 'default'
));
?>
Editoval double (9. 7. 2012 17:41)