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
+
0
-

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
+
0
-
  1. Překládat v routách ID na SLUG a obráceně je nesmysl
  2. když máš filterIn, tak bys měl mít i vždy filterOut. Navíc ten filterIn máš blbě (obsahuje kód pro filterOut)