Přesměrování z flashe a routy

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

Zdravím. Ve stránce mám flash (mapa), který podle růzých akcí generuje url a přesměrovává na ně. Např. kliknutí na kraj přesměruje na adresu: kraj=108&expert=realitni&presenter=Mapa. Funguje to ok.

Když ale zkusím přidat routu např.:

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

Tak je presenter pořád homepage. Dostávám se na „108/realitni/presenter=homepage“. Moc nechápu, proč je presenter homepage, když adresa na kteoru flash přesměroval byla „kraj=108&expert=realitni&presenter=Mapa“. Any ideas? Další routa už je jen default z distribuce „<presenter>/<action>/<id>“.

Díky za nakopnutí!

Vyki
Člen | 388
+
0
-
<?php
$router[] = new Route('<kraj>/<expert> ? presenter=<presenter>', array(
                'presenter' => 'Mapa',
                'action' => 'default',
));
?>
Martin Mates
Člen | 179
+
0
-

Vyki napsal(a):

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

Díky za odpověď, ale tohle nic neřeší. To „presenter=“ mám v routě jen pro testovací účel. Presenter je pořád Homepage namísto Mapa. :-/

toka
Člen | 253
+
0
-

A proč to nemáš takto?

...
	$router[] = new Route('<kraj>/<expert>/<presenter>', array(
		'presenter' => 'Mapa',
		'action' => 'default',
	));
..

Resp. pokud je tato routa jediná, tak bych klidně i presenter v routě vynechal – bude-li vždy Mapa.

Možná bych ještě uvedl default hodnoty pro kraj a expert:

...
	$router[] = new Route('<kraj>/<expert>/<presenter>', array(
		'presenter' => 'Mapa',
		'action' => 'default',
		'kraj' => NULL,
		'expert' => NULL,
	));
..
Martin Mates
Člen | 179
+
0
-

Proboha kluci, to ale vůbec neřeší ten problém. Nejde o tvar routy, jde o to, proč je presenter Homepage i když je v url presenter=Mapa.

Když to dám „<kraj>/<expert>/<presenter>“, tak je v url akorát 108/realitni/homepage místo prázdna, které bych očekával pro presenter Mapa.

toka
Člen | 253
+
0
-

A proč už v tom Flashi nemáš odkaz na /108/realitni/Mapa namísto kraj=108&expert=realitni&presenter=Mapa?

Vyki
Člen | 388
+
0
-

Tak to musí matchnout ta druhá routa, jinak není možné aby si to samo od sebe vymyslelo presenter s názvem Homepage. Jak máš v kódu obě ty routy? Dej sem celý ten kód, kde je obě definuješ. Občas záleží i na pořadí.

toka
Člen | 253
+
0
-

Já totiž nevím, ale když mne běží Router tak mi normálně funguje překlad např. /108/realitni/Mapa vnitřně na kraj=108&expert=realitni&presenter=Mapa, ale pokud zadám do prohlížeče kraj=108&expert=realitni&presenter=Mapa tak mi to odchytí vždy nějaká defaultní routa.

Vyki
Člen | 388
+
0
-

Zkoušel jsem to uměle podstrčit své aplikaci v tom query stringu a zjistil jsem, že nette automaticky ořízne parametr presenter a action, a přesměruje na defaultní stránku a v query stringu zachová pouze parametry, které nette nezná. To znamená, že když do URL nacpu:
http://local.l/?kraj=108&expert=realitni&presenter=Mapa přesměruje na mojí homepage – presenter, který mám jako výchozí, tedy adresu http://local.l/?kraj=108&expert=realitni. Z toho lze vydedukovat, že pokud to nezpracuješ pomocí SimpleRoute bude to presenter i action v query stringu ignorovat, respektive ořezávat.

Editoval Vyki (7. 7. 2010 13:45)

toka
Člen | 253
+
0
-

Vyki napsal(a):

Zkoušel jsem to uměle podstrčit své aplikaci v tom query stringu a zjistil jsem, že nette automaticky ořízne parametr presenter a action, a přesměruje na defaultní stránku a v query stringu zachová pouze parametry, které nette nezná. To znamená, že když do URL nacpu:
http://local.l/?kraj=108&expert=realitni&presenter=Mapa přesměruje na mojí homepage – presenter, který mám jako výchozí, tedy adresu http://local.l/?kraj=108&expert=realitni.

A proto si myslím, že by už z toho Flashe měly „chodit“ adresy ve tvaru /108/realitni/Mapa resp. /108/realitni.

Vyki
Člen | 388
+
0
-

To každopádně. Cpát to do QS je zbytečné. Nevím jak to má kolega udělané, ale já bych ty adresy nechal generovat Nette jako výstup do xml a flash by si to dynamicky tahal. Mám to tak uděláno u jednoho projektu a běhá to prefektně.

Martin Mates
Člen | 179
+
0
-

Díky všem. Teď už je to jasné. Nevěděl jsem, že to Nette takto ořezává a chytá to default routa. Upravím to v tom Flashi. Ono by to vyřešilo hned na začátku, šlo spíš o to, že jsem nechápal, kde je problém.

Ještě jednou díky!