Router – zruseni presmerovani

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

Zdravím,

mám dotaz. Mám odkaz: /pobocky/praha například a když na to kliknu, tak jsem chtěl nastavit toto pravidlo, aby mi z toho vznikla proměnná „mesto“:
$router[] = new Route(‚/pobocky/<mesto>‘, ‚Pobocky:vypis‘);

Ale problém je, že v praxi nastane přesmérování na adresu:
/pobocky?mesto=praha

A to je špatně, protože to nechci přesměrovat.

Jak to vyřešit?

Duch.Veliky
Člen | 68
+
0
-

Zatím problém vyřešilo, že jsem nastavil:
public $autoCanonicalize = FALSE;

Nejsem si však jistý, jestli je to správné řešení. Případně díky za tip :)

David Matějka
Moderator | 6445
+
0
-

ukaz, v jakem poradi mas routy. mely by byt od tech nejvice specifickych (coz tady ta je) az po obecne na konci (tedy neco jako <presenter>/<action>)

Duch.Veliky
Člen | 68
+
0
-

On ten rout jakoby funguje, ale prostě místo aby jen převzal proměnné, tak se přesměruje na ten tvar ?mesto=promenna, což asi zajišťuje právě ten autocanonical

public function createRouter()
	{
		$router = new RouteList();
        $router[] = new Route('/o-nas', 'Pages:o_nas');
        $router[] = new Route('/pobocky/<mesto>', 'Pobocky:vypis');
        $router[] = new Route('/pobocky', 'Pobocky:vypis');

		$router[] = new Route('<presenter>/<action>[/<id>]', 'Pages:uvod');
		return $router;
	}

Editoval Duch.Veliky (27. 8. 2014 17:08)

David Matějka
Moderator | 6445
+
+1
-

nejdriv, koukni na formatovani kodu zde na foru

jj chapu ten problem. ale nechapu, proc se to tak chova. poradi rout vypada spravne.. mozna zkus ty dve routy s pobockama nahradit za tuhle:

$router[] = new Route('/pobocky[/<mesto>]', 'Pobocky:vypis');
Duch.Veliky
Člen | 68
+
0
-

Jo takle jak jsi napsal to funguje. Ono to teda asi mělo pocit že to bude duplicitní stránka k tomu /pobocky a proto to z toho dělalo /pobocky?mesto=praha, když se nevypnula kanonická URL.

Díky moc :)