Schovat parametry v cestě pouze pro jeden presenter

matronator
Člen | 38
+
0
-

Zdravím, v PHP jsem víceméně začátečník a s Nette jsem začal před pár týdny. Četl jsem dokumentaci, hledal na netu, ale stejně pořád nějak nechápu jak fungujou ty Routy.

Mám PagesPresenter, který bere stránky z db a vykresluje je v default templatu podle parametru. Momentálně cesty vypadají takhle: domain.com/pages/default/about-us a já bych potřeboval schovat část cesty tak, aby se ukazovala pouze jako domain.com/about-us, nebo alespoň bez toho default domain.com/pages/about-us.

Zkoušel jsem všechno možný v RouterFactory a buď se nic nestalo, nebo to rozbilo ostatní routy.

RouterFactory:

<?php
$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('sitemap.xml', 'Default:sitemap');
$frontRouter[] = new Route('sitemap', 'Default:sitemap');
$frontRouter[] = new Route('<presenter>/<action>/<slug>', 'Shop:default');
$frontRouter[] = new Route('<presenter>/<action>[/<htaccess>]', 'Default:default'); //most general route
?>

Zkoušel jsem Route('/<slug>', 'Pages:default');, Route('pages/<slug>', 'Pages:default'); a spoustu dalších, ale bez úspěchu.

Any help appreciated!

Ondřej Kubíček
Člen | 494
+
+2
-

tohle:

$frontRouter[] = new Route('pages/<slug>', 'Pages:default');

ti vygeneruje tohle – /pages/about-us

případně můžeš:

$frontRouter[] = new Route('<slug>', 'Pages:default');

to ti odchytí všechny /cokoli

matronator
Člen | 38
+
+1
-

Tohle sem právě zkoušel a ty cesty se furt neměnili, ale dobrý, já sem jenom idiot. Chyba nebyla v Routeru, ale v odkazech samotnejch, já myslel že se ty odkazy sami přesměrujou podle Routeru a odkazoval jsem na Pages:default $page->slug. Někdy je fakt nejlepší se vyspat, ráno to pak myslí líp. Každopádně díky za odpověď :)