AJAX s Nette 2.0 + PHP 5.3 – „hello word“ tutorial
- Cifro
- Člen | 245
Napr. Srigiho SACT… i keď to není zrovna Hello world…
demo: http://sact.phpq.info/
zdrojaky: https://github.com/srigi/sact
Editoval Cifro (5. 12. 2010 18:02)
- Aurielle
- Člen | 1281
Přesně tohle jsem dělal (ale se starými snippety): http://nette.valvegames.cz/ajax-demo.rar
- gerades
- Člen | 40
Cifro napsal(a):
demo: http://sact.phpq.info/
Divam se na to a mam par dotazu:
- Tu navigaci dal do komponenty jen proto, aby tam mel vetsi prehlednost v kodu a mozna kvuli „reuse“? Nebo je tam neco co nevidim…?
- „href=“{plink article! ‚slug‘=>$head->slug}"" → proc pouziva „slug“, proc nepouzije „id“? Zrejme nechapu zapis a praci tady s tim odkazem… :-/
- Kdyz klikne na tento odkaz: „href=“{plink article! ‚slug‘=>$head->slug}"" (v navigaci), zavola se „function handleArticle($slug)“, ale ve funkci hangleArticle se nic nenacita a ani se nezmeni hodnota $article->text. Jak je teda mozne, ze se nacte? Tady mi neco unika.
- srigi
- Nette Blogger | 558
gerades napsal(a):
- Tu navigaci dal do komponenty jen proto, aby tam mel vetsi prehlednost v kodu a mozna kvuli „reuse“? Nebo je tam neco co nevidim…?
Je to kvoli tomu, aby bolo mozne navigation bar chapat ako samostatny funkcny blok, ktory si na stranke umiestnis na lubovolne miesto.
- „href=“{plink article! ‚slug‘=>$head->slug}"" → proc pouziva „slug“, proc nepouzije „id“? Zrejme nechapu zapis a praci tady s tim odkazem… :-/
Tu mi islo o cool URI (alebo SEO) – nemat v URL nejake nezmyselne IDcka, ale titulok clanku. Ide naozaj len o SEO (a kopirovanie cool URI z Wordpressu).
- Kdyz klikne na tento odkaz: „href=“{plink article! ‚slug‘=>$head->slug}"" (v navigaci), zavola se „function handleArticle($slug)“, ale ve funkci hangleArticle se nic nenacita a ani se nezmeni hodnota $article->text. Jak je teda mozne, ze se nacte? Tady mi neco unika.
Toto je naozaj trosku magia, treba si zobrat na pomoc zivotny
cyklus presentera. Tam si vsimni, ze handle
sa vykona este pred
render
metodou. A render metoda sa kuka do modelu, co za
slug (clanok so slugom) sa ma poslat do sablony. Takze handle
metoda iba nastavi slug a render
potom v dalsom kroku zivotneho
cyklu renderuje uz tento aktualizovany slug. Zaroven invalidovany
snippet sposobi, ze render
meotda prekresli iba ten dany
snippet.
edit: este by som napisal, preco som tu 3. riesil
tak ako riesil. Prave kvoli zivotnemu cyklu som hladal riesenie ako komunikovat
s Modelom pocas requestu iba raz (jedna DB query). Uz si to nepamatam presne,
ale k tomuto konceptu som dosiel preto aby som nequeroval DB raz v
handle
a potom o chvilu v render
metode a zaroven aby
sa to nejako spravalo s a bez AJAXU.
Editoval srigi (6. 12. 2010 20:33)
- gerades
- Člen | 40
- Kdyz klikne na tento odkaz: „href=“{plink article! ‚slug‘=>$head->slug}"" (v navigaci), zavola se „function handleArticle($slug)“, ale ve funkci hangleArticle se nic nenacita a ani se nezmeni hodnota $article->text. Jak je teda mozne, ze se nacte? Tady mi neco unika.
Toto je naozaj trosku magia, treba si zobrat na pomoc zivotny cyklus presentera. Tam si vsimni, ze
handle
sa vykona este predrender
metodou. A render metoda sa kuka do modelu, co za slug (clanok so slugom) sa ma poslat do sablony. Takzehandle
metoda iba nastavi slug arender
potom v dalsom kroku zivotneho cyklu renderuje uz tento aktualizovany slug. Zaroven invalidovany snippet sposobi, zerender
meotda prekresli iba ten dany snippet.edit: este by som napisal, preco som tu 3. riesil tak ako riesil. Prave kvoli zivotnemu cyklu som hladal riesenie ako komunikovat s Modelom pocas requestu iba raz (jedna DB query). Uz si to nepamatam presne, ale k tomuto konceptu som dosiel preto aby som nequeroval DB raz v
handle
a potom o chvilu vrender
metode a zaroven aby sa to nejako spravalo s a bez AJAXU.
A prosim te, proc tam mas: usleep(1500000); ?
- gerades
- Člen | 40
Nox: diky za odpoved.
Ohledne JS: „Postará“ – myslim tim, jestli musim psat nejake
specialni JS pro zpracovani jednoducheho AJAX tlacitka (kdyz neco naimportuju,
tak to neberu, ze to musim psat…).
Snazim se rozjet jednoduchy AJAX link ktery updatne neco ve snipetu a porad se
mi to nedari… :-)