Nefungujúca routa

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

Zdravím,
celý večer už riešim routovanie no stále to nechce fungovať :-(.

bootstrap.php:

<?php
  $router[] = new Route('<lang>/<module>/<presenter>/<action>', array(
    "lang" => "sk",
    "module" => "Default",
    "presenter" => "Default",
    "action" => "Default"
  ));
?>

No keď zavolám http://localhost/…registration tak to nefunguje a vypíše výnimku No route for Partner:User:registration(lang=sk). Takisto mi nefunguje ani {link :Partner:User:Registration} v šablóne.

Takisto mi to s modulom nijako nefungovalo ani pri SimpleRouteri:

<?php
  $router[] = new SimpleRouter(array(
    'module' => 'Default',
    'presenter' => 'Default'
  ));
?>

Neviete v čom by mohla byť chyba?

Vďaka.

kravčo
Člen | 721
+
0
-

Máš v .htaccess nastavenú direktívu RewriteBase?

RewriteBase /web/

timbulko napsal(a):

Takisto mi to s modulom nijako nefungovalo ani pri SimpleRouteri:

Pretože SimpleRouter nespracováva parameter module

romansklenar
Člen | 655
+
0
-

timbulko napsal(a):

bootstrap.php:

<?php
    "action" => "Default"
?>

Pokud jsi na unixu, tak to s tou šablonou je kvůli tomu, protože máš jméno akce nadefinováno velkým a unix je case-sensitive a hledá např Default.Default.phtml místo Default.default.phtml který tam máš, takže zkus "action" => "default".

timbulko
Člen | 85
+
0
-

Som na Windowse a mod_rewrite mám nastavený správne. Hlavnú stránku mi aj načíta a takisto mi to funguje zadefiujem routy takto (pre každý modul samostatnú routu):

<?php
  $router[] = new Route('<lang>/<module>/<presenter>/<action>', array(
    "lang" => "sk",
    "module" => "Default",
    "presenter" => "Default",
    "view" => "default"
  ));

  /* bez tejto routy mi to nechce fungovať - nechápem prečo */
  $router[] = new Route('<lang>/Partner/<presenter>/<action>', array(
    "lang" => "sk",
    "module" => "Partner",
    "presenter" => "Default",
    "view" => "default"
  ));
?>

Ale nechápem, prečo sa to takto správa. Logicky by to malo fungovať všetko len podľa tej prvej routy, no keď neuvediem tú druhú (kde uvedený konkrétny modul), tak to nefunguje.

Editoval timbulko (18. 4. 2009 10:53)

Ola
Člen | 385
+
0
-

Koukám, že v těch routách asi bude nějaký BUG, taky mi ovlivnění modulu přes url bez dalších rout nefunguje ..

EDIT: tak to funguje, musím ale uvádět celou url (vč. všech presenterů a actionů, který už jsou specifikovaný defaultně).. a konstrukce url při odkazování do modulu specifikovanýho parametrem nefunguje vůbec (hlásí mi to to samý co timbulkovi)

Editoval Ola (18. 4. 2009 12:50)

TomasTB
Člen | 13
+
0
-

tak k tomuto se take pripojuji, chtelo by to aby na to mrknul nekdo zkusenejsi
Pokud mam router

<?php
$router[] = new Route('<module>/<presenter>/<action>', array(
    'module' => 'default',
    'presenter' => 'default',
    'action' => 'default',
));
?>

Tak to nefakci, ale pokud pro kazdej module udelam zvlastni router tak to funguje

<?php
$router[] = new Route('modul1/<presenter>/<action>', array(
    'module' => 'modul1',
    'presenter' => 'default',
    'action' => 'default',
));
$router[] = new Route('modul2/<presenter>/<action>', array(
    'module' => 'modul2',
    'presenter' => 'default',
    'action' => 'default',
));
?>

Presenter to najde, startup() se provede, ale pri overovani $router->contructUrl(… , …) se nevygeneruje spravna adresa.

Pouzivam revizi 254
Opravil jsem si to tak, ze v Route.php jsem zmenil nekde kolem radku 258 tohle

<?php
if (isset($metadata[self::MODULE_KEY]['fixity'])) {
?>

na tohle, ale nejsem si jist co dalsiho to zpusobilo, ale funguji obe predchozi moznosti

<?php
if (isset($metadata[self::MODULE_KEY]['fixity']) && $metadata[self::MODULE_KEY]['fixity'] == self::CONSTANT) {
?>

Editoval TomasTB (20. 4. 2009 13:52)

Hynek
Člen | 9
+
0
-

Zběžně jsem to otestoval s routou co popisuje TomasTB a žádný problém nevidím. Mrkněte do examples/modules-usage na adresářovou strukturu a na velikost písmen a určitě to taky rozjedete.

Ola
Člen | 385
+
0
-

V tom to není, adresářovou strukturu jsem měl na 100% dobře když jsem to zběžně testoval (normálně mám jen Admin modul a front modul, takže takový routy nepotřebuju)