Problém s rozeznáním url v routeru
- vibko
- Člen | 43
Dobrý den, je nějak možné v routeru už filtrovat url? Mám takový problém, potřebuji nějak otestovat, zdali zdané url je produkt, kde se vykreslí detail produktu, nebo kategorie, kde by se vypsala všechny produkty z dané kategorie. Případně budu rád, za jakoukoliv radu, jak to vyřešit. Změna struktury stránek bohužel není možná.
- Jan Tvrdík
- Nette guru | 2595
Ano. Dokumentaci jsi četl? Pokud filtr vrátí NULL, zkusí se další routa.
- vibko
- Člen | 43
Tak jsem myslel, že to bude jednoduché, ale nejsem schopný to dát dohromady :( Nemohl byste mě prosím ještě poradit? Moc nechápu práci s filtry.. Mám $router[] = new Route(‚zbozi/[<url>]‘, ‚Eshop:Product:default‘);, ale když neexistuje url zadané kategorie, tam bych chtěl, at zkusi hledat ve zboží $router[] = new Route(‚zbozi/[<url>]‘, ‚Eshop:Product:detail‘);
- vibko
- Člen | 43
V renderDefault mám nastavené,že pokud nenajde kategorii, tak funkce vrátí NULL, je to správně?
$router[] = new Route('zbozi/[<url>]', array(
'presenter' => 'Eshop:Product',
'action' => array(
Route::VALUE => 'default'
)
));
$router[] = new Route('zbozi/[<url>]', array(
'presenter' => 'Eshop:Product',
'action' => array(
Route::VALUE => 'detail'
)
));
- CZechBoY
- Člen | 3608
@vibko FILTER_IN funkce musí vrátit null
v dokumentaci je tento příklad:
$route = new Route('<presenter=Homepage>/<action=default>', [
'action' => [
Route::FILTER_IN => function($action) {
return strrev($action);
},
Route::FILTER_OUT => function($action) {
return strrev($action);
},
],
]);
snad pomůže
- vibko
- Člen | 43
Děkuji moc za pomoc, ale pořád jsem ztracený :( Pomohl byste mi prosím ještě, co má daná funkce obsahovat? Můj kod nyní:
$router[] = new Route('zbozi/[<url>]', array(
'presenter' => 'Eshop:Product',
'action' => [
Route::VALUE => 'default',
Route::FILTER_IN => function($action) {
return strrev($action);
}
]
));
$router[] = new Route('zbozi/[<url>]', array(
'presenter' => 'Eshop:Product',
'action' => [
Route::VALUE => 'detail'
]
));