Persisten Fifteen – po F5 dojde k resetu hry

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

Pokoušel jsem se marně pomocí anotací @persistent v example aplikaci fifteen docílit, aby hra po stisknutí F5 zůstala tam kde byla. nedaří se mi to

Myslím že by to mělo spravit pár anotací.

bez JS to samozřejmě funguje..

sodae
Nette Evangelist | 250
+
0
-

protože ty přenášíš data přes javascript. Musel bys sis to naimplementovat ;)

norbe
Backer | 405
+
0
-

Jen pro uprřesnění, @persistent dělá to, že se ten parametr automaticky přidává do URL adresy z které se pak při dalším reguestu opět nastaví na původní hodnotu. Pokud však provádíš nějaké akce ajaxem, url v adresním řádku prohlížeče se Ti nezmění a při F5 se použije vychozí hodnota persistentního parametru.

Vyki
Člen | 388
+
0
-

Jak píše norbe, takhle jak to zamýšlíš to udělat nejde. Pokud bys na tom trval můžeš si stav hry ukládat při každém requestu do session.

Patrik Votoček
Člen | 2221
+
0
-

Vyki napsal(a):

Jak píše norbe, takhle jak to zamýšlíš to udělat nejde.

Ale nepovídej! Přesně za tímto účelem vzniklo v HTML5 http://www.w3.org/…history.html#…

bojovyletoun
Člen | 667
+
0
-

Tuhle jsem řešil u jedné tabulky (žádný Data/Grid/ito), jak k ní přidat ajaxový fomulář s filtry a řazením, tak, aby po reloadu či dokonce opuštění a vrácení na stránku zůstaly hodnoty
To se povedlo – nástřel

/* init: startup() nebo actionNeco() */
$this->sto = $this->getSession('PersistentSessionData');
if(!$this->sto->__isset('f'))$c->onSubmit($c);
if(!$c->isSubmitted())$c->values = $this->sto->f;
/*validsubmitCallback*/
$this->sto->f = $form->values;
//k objektu se pak v presenteru přistupuje pomocí this->sto->f

jak to vylepšit

Nicméně by to šlo vylepšit třeba rozšířením AppFormu a přepsat metody LoadState a SaveState, aby pracovaly se session. CO vy na to?

Editoval bojovyletoun (2. 2. 2011 1:11)