Routování pro produkty bez presenteru v URL
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- David Zadražil
- Člen | 62
Zdravím všechny,
trochu se trápím s routováním, které se snažím vytvořit pro jeden e-shop. Základní vize je, že produkt bude mít následující tvar – http://example.com/…e-5-5s-modra.
Fungování jsem si představoval následovně – vytvořím odkaz s ID varianty produktu (ne s ID samotného produktu), získám název varianty (modrá) a poté získám název samotného produktu (Ultra tenký obal iPhone 5/5S). To by se mělo transformovat do té URL výše, ID je ID varianty.
Podařilo se mi to jenom tak do půlky –
$frontModule[] = new Route('<product>', [
'presenter' => 'Produkt',
'action' => 'default',
'product' => [
Route::FILTER_IN => function ($id) use ($productManager) {
$productData = $productManager->getProductUrl($id);
return $productData;
}
]
]);
Metoda getProductUrl() –
public function getProductUrl($id)
{
$variantData = $this->variantDao->find($id);
if (isset($variantData)) {
return $variantData->product->seoName;
} else {
return NULL;
}
}
Ovšem to se přesměruje pouze na http://example.com/…-iphone-5-5s což chápu, ale netuším jak pracovat s těmi dalšími parametry a pospojovat to.
Vše díky za ochotu!
- Jan Tvrdík
- Nette guru | 2595
- Překládat v routách ID na SLUG a obráceně je nesmysl
- když máš filterIn, tak bys měl mít i vždy filterOut. Navíc ten filterIn máš blbě (obsahuje kód pro filterOut)