Proč se zobrazuje DEFAULT v URL?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
reidim
Člen | 4
+
0
-

Zdravím,
mám problém který mi hlava nebere.
Mám FotogaleriePresenter, který má actionDefault($id) a renderDefault($id).

Pokud v Latte vytvořím odkaz:

<a n:href="fotogalerie:default 2012">2012</a>

tak bych chtěl, aby mě to přesměrovalo na fotogalerie/2012.
Místo toho mě to však přesměruje na fotogalerie/default/2012.
Je mi jasný že to můžu obejít nějakým actionRok a renderRok a mít pak fotogalerie/rok/2012, ale to nechci a zkrátka chci, aby výsledná adresa byla fotogalerie/2012.

V bootsrapu mám jednu jedinou Routu a to:

$container->router[] = new Route('fotogalerie/<id>', array(
    'presenter' => 'fotogalerie',
    'action' => 'default'
));

V čem je problém, že se mi tam vždycky nacpe ten DEFAULT do URL?
Nette mám akutální a běží mi to na localhost Apache Serveru.
Díky Radim

Editoval reidim (25. 3. 2013 18:21)

Felix
Nette Core | 1196
+
0
-

Bacha na RouterFactory, jestli pouzivas sandbox, tak je ve slozce app/router/RouterFactory.php.

Takze tu tvoji routu pridej tam nad defaultni routu.

Link: https://github.com/…rFactory.php#L23

Editoval Felix (25. 3. 2013 19:05)

reidim
Člen | 4
+
0
-

Přišel jsem na to, jak docílit odmazání DEFAULT z URL, ale těžko říct, zda ne až moc násilně:
Nechal jsem si bootstrapu před vlastní definicí routy vypsat proměnnou router[]:

dump($container->router);
die();

To mi vypsalo následující:

Nette\Application\Routers\RouteList(3) {
   cachedRoutes private => NULL
   module private => ""
   list private => array(2) [
      0 => Nette\Application\Routers\Route(7) {
         mask private => "index.php" (9)
         sequence private => array(1) [ ... ]
         re private => "#index\.php/?\z#Aiu" (19)
         metadata private => array(2) { ... }
         xlat private => array(0)
         type private => 3
         flags private => 1
      }
      1 => Nette\Application\Routers\Route(7) {
         mask private => "<presenter>/<action>[/<id>]" (27)
         sequence private => array(11) [ ... ]
         re private => "#(?:(?P<presenter>(?U)[a-z][a-z0-9.-]*)/(?:(?P<action>(?U)[a-z][a-z0-9-]*)(?:/(?P<id>(?U)[^/]+))?)?)?/?\z#Aiu" (109)
         metadata private => array(3) { ... }
         xlat private => array(0)
         type private => 3
         flags private => 0
      }
   ]
}

Ani jednu z těchto Route jsem v bootstrapu nekonfiguroval a tak předpokládám, že jsou tam defaultně z Nette. Tu druhou jsem se pokusil offsetem odstranit, ale nepodařilo se. Proto jsem ji přepsal násilně takto:

$container->router->offsetSet(1, new Route('', 'Homepage:default'));

Po tomto přemázání mi již adresování bez DEFAULT v URL funguje.
Je to opravdu jediná možnost? Proč mám již předem definovanou ROUTU <presenter>/<action>[/<id>]?
Díky

reidim
Člen | 4
+
0
-

Díky FELIX. To je ono. Neměl jsem o RouterFactory ani tušení, že v sandboxu je.
Tím vše vyřešeno.
Díky Radim

Editoval reidim (25. 3. 2013 19:02)