Jak na AJAX v Nette?

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

Hledal jsem všude možně – doku, tohleto fórum, phpFashion a stále nic – sem tam nějaká zmínka, ale chybí mi ucelený pohled – je někde nějaký post/příspěvek ve fóru, který uceleně říká **jak na AJAX v Nette?

Ano, už jsem našel, že to souvisí se snippety a že si vykreslitelné komponenty sami dovedou zjistit zda se mají překreslit, či ne. Ale prostě potřeboval bych nějaký příklad mini-appy s AJAXEM – neboli, co musím udělat minimálně, abych mohl formulář odesílat AJAXem a překreslovalo mi to část stránky.

Omlouvám se, jestli už nějaký AJAX post existuje, ale já jsme ho nenašel. Pokud neexistuje, tak mi poraďte tady a nějaký zplodíme.

Páč jsem v situaci, kdy chci pochopit jak na AJAX v Nette a nemám výchozí bod. V doku se píše, že AJAX viz fórum…

Je např. nutné vytvořit komponentu/control abych mohl používat AJAX? (tím používat AJAX mám na mysli používat ho zaintegrovaně v Nette – abych využil těch krásných věcí, kdy si komponenta sama rozhodne jestli je nutné aby se překreslila…)

Díky za pomoc;-)…

Honza Marek
Člen | 1664
+
0
-

Ano, už jsem našel, že to souvisí se snippety

Snippety jsou nějaké divy s unikátním id a při ajaxovém požadavku se pošlou zpět JSONem jen ty zneplatněné (invalidované). Pak se to překreslí nějakým javascriptovým ovladačem.

Snippety se v šabloně označí takto:

{snippet nazev}
Obsah
{/snippet}

Invalidovat snippet, co není v controlu, lze v presenteru jako $this->invalidateControl("nazev").

a že si vykreslitelné komponenty sami dovedou zjistit zda se mají překreslit, či ne. Ale prostě potřeboval bych nějaký příklad mini-appy s AJAXEM – neboli, co musím udělat minimálně

Když zneplatníš komponentu, zneplatní se všechny její snippety. Komponenta se sama zneplatní, když chytne signál.

abych mohl formulář odesílat AJAXem

Javascriptové odesílátko formuláře je v extras, na straně php ajaxové odesílání formuláře není nijak mimořádně řešené.

a překreslovalo mi to část stránky.

Zneplatnit nějaký snippet.

Páč jsem v situaci, kdy chci pochopit jak na AJAX v Nette a nemám výchozí bod. V doku se píše, že AJAX viz fórum…

https://doc.nette.org/…ication/ajax, ale není to myslím moc snadno pochopitelné :-D

Je např. nutné vytvořit komponentu/control abych mohl používat AJAX?

ne

Závěrem:

Pozor na zkurvenost, která se nazývá zavináčová magie. V praxi to znamená, že je potřeba před každé {include} nebo {? $control->render()} cpát zavináč (@{include …} a tak).

Editoval Honza M. (14. 4. 2009 9:28)

Inza
Člen | 330
+
0
-

Díky moc Honzo, dneska večer se s tím zkusím poprat…

jasir
Člen | 746
+
0
-

Jestli používáš {extends} layouty, vypadá to, že ve spojení se snippety & ajaxem je tam již delší dobu neřešená chyba, tak ať se zbytečně netrápíš :) jestli na to narazíš.