Nette 2.0 ajax router / hash driven

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

Dělám ajax app, potřebuji aby uživatelé si mohli předávat url, a aby url držela nějaký stav aplikace.

Jediná šance je hash, umí už nette něco jako hash router?

www.ajax.cz/#…

tam byl ještě nějaký trik s

!#

to zavedl google ne?

četl jsem v minulosti pár článků o tom, ale už je to delší dobu, neorientujete se někdo v aktuálních trendech?

další věc je, že je určitě nutný nějaký javascript router, aby poznal co z hashe má dělat

na nějakém ze starších projektů jsem použil něco podobné

http://benalman.com/…ange-plugin/

co nette? tváří se na to nějak, řešilo se to ve spojení s 2.0 ne?

o5
Člen | 416
+
0
-

Ve svojim gride jsem to resil za pomoci hashchange pluginu, kterej ti naimplementuje event, kdy se hash zmeni a podle toho si udelas request jaky chces a prekreslis. Pokud by si to chtel videt jak sem to implementoval muzu poslat link.

Nette to imho v soucasne verzi neumi avsak na webexpu to david ukazoval, ale je to asi v hodne ranne fazi.

edit: aha, neklikal jsem na ten tvuj link

Editoval o5 (9. 6. 2011 13:04)

Matúš Matula
Člen | 257
+
0
-

hashchange nie je jedina sanca. Mrkni na History.js dokaze menit url pomocou History objektu cez pushState() s graceful degradaciou na hashchange. Ma to super dokumentaciu, takze tam najdes vsetko, co potrebujes.
Myslim, ze Nette to oficialne nijako neriesi zatial..

newPOPE
Člen | 648
+
0
-

Podla mna je zbytocne riesit router. My sme toto riesili ale potrebovali sme robit ajaxom vsetko (get, formulare …)

Riesenie je vcelku jednoduche pokial nepotrebujes posielat formulare.

Pouzili sme jquery.history.js kde je zaveseny event ked sa zmeni URL za # tak sa proste posle ajax request dostanes spat snippety a len replacnes. Cize sme mali uz v layout VELKY snippet :-). Vyhodu tu malo tu ze ked si vypol JS tak si fungoval dalej akoby sa nic nezmenilo…

Aha ohladom toho routingu, ziadny dalsi router nebol proste sme mali napr #/page/1/ tak AJAXom bol request na {$baseUrl}+ '/page/1/'

Editoval newPOPE (9. 6. 2011 13:39)

mcmatak
Člen | 490
+
0
-

no rozumím, ale co handle atd. to znamená že všechna routovací logika je

  1. na dvou místech, tzn. v bootstrapu
  2. v různých funkcích javascriptu roztrkané různě po kódu

změna komponenty, její přesun nebo změna názvu, atd. se musí hledat různě po kódu?

podle jakých pravidel sestavovat hash? jak skládat parametry atd? co handle?