Jak na AJAX v Nette?
- Inza
- Člen | 330
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
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)
- jasir
- Člen | 746
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íš.