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)