Rozdílnost zápisů u route (array vs Route)

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

Ahoj,
když zapíšu tu samou routu dvěmi různými zápisy, tak mi to dává různé výsledné adresy

<?php
$router[] = new Route('Ucetnictvi/<presenter>/<action>', 'Ucetnictvi:Default:default');
//localhost/Ucetnictvi/ucetnictvi.ucetnictvi/

$router[] = new Route('Ucetnictvi/<presenter>/<action>', array(
        'module' => "Ucetnictvi",
        'presenter' => 'Default',
        'action' => 'default',
));
//localhost/Ucetnictvi/ucetnictvi/
?>

Je pro to nějaké vysvětlení? případně jak kratší zápis upravit aby nedělal adresu ve tvrau <module>.<presenter>?

Díky

Filip Procházka
Moderator | 4668
+
0
-

Zápis

$router[] = new Route('Ucetnictvi/<presenter>/<action>', 'Ucetnictvi:Default:default');

Odpovídá

$router[] = new Route('Ucetnictvi/<presenter>/<action>', array(
        'presenter' => 'Ucetnictvi:Default',
        'action' => 'default',
));

Použij zápis, který dělá co potřebuješ. Copak je to problém?

sinacek
Člen | 23
+
0
-

První udělá localhost/Ucetnictvi/ucetnictvi.ucetnictvi/

a druhý localhost/Ucetnictvi/ucetnictvi/

nanuqcz
Člen | 822
+
0
-

Ty dvě routy nejsou stejné. Rozdíl je v tom, že druhá routa si „pamatuje“ defaultní modul, první ne. Když tak budeš mít URL localhost/articles/, první routy vygeneruje požadavek :Articles:default (zapomene modul Ucetnictvi), druhá vygeneruje požadavek Ucetnictvi:Articles:default

Pokud nechceš, aby ti první routa „zapomínala“ název modulu, slouží k tomu RouteList. Při jeho použití by se i měla vygenerovat stejná URL jako v array případě.

Editoval xxxObiWan (1. 8. 2011 12:54)

sinacek
Člen | 23
+
0
-

Díky, nidke v dokumentaci jsem to nenašel…