Špatné přijmutí routy – volá se špatná action

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

Zdravím,

mám tyto dvě routy:

$router[] = new Route('<cat>[/<id>]', array(
    'module' => 'Front',
    'presenter' => 'Web',
    'action' => 'category',
));

$router[] = new Route('<action>[/<paginator-page>]', array(
    'module' => 'Front',
    'presenter' => 'Web',
    'action' => 'default',
));

Přičemž ta první by se měla použít pouze pokud se volá akce category a předá se jí parametr cat.

Ta druhá by se měla volat u ostatních akcí stejného presenteru.

Ovšem když pak odkazuji:
<li><a n:href=":Front:Web:vyrobky">Výrobky</a></li>
tak se použije první routa což samozřejmě nechci. Zavolá se tedy action category místo action vyrobky jak chci.

Debug panel hlásí toto:

Front:Web:category
cat = vyrobky
id = NULL

Opět nevím jak se přišlo na to, že cat = vyrobky.

Díky za odpovědi, routám moc nerozumím a opravdu si nyní nevím rady :-)

Editoval Darkry (16. 6. 2011 11:30)

newPOPE
Člen | 648
+
0
-

Obidve routy nemaju ziadne obmedzenia v maske (su zo strany FW rovnake :-)) cize Nette nemoze vediet ktoru chces pouzit a proste vygeneruje podla prvej ktora pasuje.

to cat tam zrejme uz FW sam vydetekuje ze sa koder mozno pomylil tak to dosadi inteligentne :-) aj ked je mi to trochu divne preco to robi ked mu to nik nepovedal!.

Edit:
este mozes skusit pouzit filter

Editoval newPOPE (16. 6. 2011 11:55)

Darkry
Člen | 101
+
0
-

Asi jsem úplně blbej, ale jak to teda můžu omezit aby ta první routa brala pouze action category?

newPOPE
Člen | 648
+
0
-
<?php
$router[] = new Route('<cat vyrobky>[/<id>]', array(
    'module' => 'Front',
    'presenter' => 'Web',
    'action' => 'category',
));
?>
Darkry
Člen | 101
+
0
-

Tohle ale, pokud se nepletu, dělá, že aby se routa použila tak parametr cat musí být výrobky. Já můžu mít v parametru cat asi 6 názvů různých kategorií, tj by se spíš hodilo určit, že action vždycky musí být category.