Dynamický formulár – pure JS

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

Zdarec,

tentoraz sa moja otázka týka Nette Forms & JS – ako sú vlastne oni na tom, čo sa týka dynamického počtu hodnôt v kontajnery? Áno, čítal som viaceré téma, ako #1825, #12494, #10938 a iné… síce je to všetko pekné a ďakujem dotyčným za príklady, ale vyriešiť problém týmto spôsobom by nebol problém… ja však mám rád čistý kód a držím sa zásady:
JS má na starosti interakciu s userom, PHP tvorbu obsahu a spracovanie dát…

Poďme si problém načrtnúť:
máme x prvkov v kontajnery gifts[] {x ∈ (0,20>}

Východiskový počet prvkov je 1 a následne môže user pridať ďalšie (max. 20 v tomto prípade). Prvky sú indexované samozrejme 0–19.
Ako som spomínal vyššie, nebol by problém pridať ďalší prvok použitím snippetu a AJAX, ale podľa mojej zásady PHP sa nemá čo starať o interakciu s userom (onclick is for JS, submitted is for PHP… [onsubmit still for JS]).
Čiže ja nechcem pre pridanie prvku použiť žiaden AJAX a jednoducho prvok pridať duplikáciou predchádzajúceho (samozrejme potom by prebehli potrebné úpravy ostatných prvkov – hlavne tabindex a pod.). Proste aby sa Nette nestaral o počet prvkov v poli… lebo dajme tomu – user pridá ďalších 19 prvkov, 4 z nich zmaže a potom ich znova pridá, zmaže ďalší jeden a tiež ho znova pridá… to je 19 + 2*4 + 2*1 = 29 zbytočných XHR… zbytočná záťaž servera a zbytočná nutnosť zdržovania usera…

Čiže v kocke - Ako dosiahnuť, aby Nette spracovalo všetky prvky v kontajnery bez ohľadu na ich počet a bez nutnosti XHR (a samozrejme bez vytvorenia bezpečnostnej diery).

Vopred ďakujem (hoci sa mi podarilo napísať kratší román ;D).

PS: Pod prvkom mám na mysli <input type="text" name="gifts[x]" />


Roland „DOBss“ Dobos

DOBss
Člen | 24
+
0
-

hmm… nie, ale vyzerá to zaujímavo (sľubne)… Ďakujem, pozriem si to v najbližších dňoch. GJ!!

DOBss
Člen | 24
+
0
-

hmm.. ani nie…

DOBss napsal(a):

Čiže v kocke - Ako dosiahnuť, aby Nette spracovalo všetky prvky v kontajnery bez ohľadu na ich počet a bez nutnosti XHR (a samozrejme bez vytvorenia bezpečnostnej diery).

XML Http Request (XHR) = AJAX

mňa by skôr zaujímalo, ako dosiahnuť, aby Nette spracovalo polia pridané pomocou JS (napr. duplikáciou pomocou jQuery clone a nie AJAX requestom)…

David Matějka
Moderator | 6445
+
0
-

imho, kdyz to budes resit na strane klienta normalni javascriptem (pridavat html inputy atd) stejne, jak by to udelal replicator, tak si s tim replicator poradi..

LeonardoCA
Člen | 296
+
0
-

určitě to replicátor zvládne, sestavuje si formulář na základě hodnot z post a počet položek nemusí být předem daný, stačí když si upravíš funkčnost tlačítek +/- aby negenerovaly requesty nebo je nepoužívat a ošetřit si to na straně html/js po svém

DOBss
Člen | 24
+
0
-

nj, sory… už vidím, že sa s tým treba len pohrať… ďakujem vám! ;]