Zmena canonicalize()

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

Ahoj,

v revizi 122 se zmenila metoda canonicalize() v Presenteru, chova se to ted ale trochu jinak, nez predtim. Zacnu hned prikladem:

Mam parametr presenteru messageId (neperzistentni). Kdyz je vyplnen, zobrazim nejakou status zpravu. Jelikoz se mi ale messageId smaze jen pri novem requestu a nikoli pri sub-requestu, driv sem si obsah „vymazal“ rucne pomoci unset($this->params['messageId']);.

Nyni mi ale canonicalize presmeruje pozadavek a tudiz o messageId prijdu nadobro, aniz bych ji zobrazil. Jake je v tomto pripade idealni reseni?

Editoval A. (26. 11. 2008 14:25)

David Grudl
Nette Core | 8218
+
0
-

Dělá to i v poslední verzi?

A.
Člen | 87
+
0
-

J.

A.
Člen | 87
+
0
-

Teda, mam vcerejsi revizi 130.

David Grudl
Nette Core | 8218
+
0
-

Tak ještě jednou – ty v actionXyz() smažeš unset($this->params['messageId']), které později v aplikaci potřebuješ?

A.
Člen | 87
+
0
-

V actionXyz(), pokud mam messageId vyplneno, si ulozim do templatu nejakou tu hlasku a nasledne volam onen unset. Driv se canonicalization neprovedla, ted ano → tudiz po ni uz messageId nemam a tedy ani onu promennou v templatu, protoze se stranka presmeruje.

Editoval A. (26. 11. 2008 15:52)

David Grudl
Nette Core | 8218
+
0
-

A proč tu proměnnou mažeš?

A.
Člen | 87
+
0
-

Protoze, kdyz pak tvorim link na nejaky komponente (popr. signal na presenteru), tak zustane v presenteru nasetovana, a tudiz se ta message zobrazi znovu, kde uz ji nechci.

Editoval A. (26. 11. 2008 16:18)

Mas3r
Člen | 116
+
0
-

Tak ji nedávej persistentní

A.
Člen | 87
+
0
-

A. napsal(a):
Mam parametr presenteru messageId (neperzistentni).

Neni perzistentni. Sak parametry zustavaji stejne, pokud neni vytvoren novy request. A pokud je to jen signal nebo link na komponente, tak je to pouze subrequest, opravte me kdyztak.

Mas3r
Člen | 116
+
0
-

Sry, tak to jsem se přehlédl.

Já používám toto:

<?php
if(count($tree)==0) $this->redirect('default', array( 'error' => 4 ));
?>

A funguje.

A.
Člen | 87
+
0
-

No a zkus si pak v tom presenteru, kam te to presmeruje vytvorit nejaky subrequest a uvidis, ze parametr error zustane stale nastaven na 4. Proto ho rucne unsetuju.

David Grudl
Nette Core | 8218
+
0
-

K odstranení parametru a předání do šablony by v tom případě mělo dojít až v metodě renderXyz()

A.
Člen | 87
+
0
-

Diky, pomohlo. Taky me to mohlo napadnout :-/. Bal jsem se asi tenkrat, ze bych uz mohl v nejake komponente vytvaret link jiz v presetXyz, coz by ale asi z hlediska filozofie bylo spatne, ze?