JS validace hidden inputu

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

Zdravím,

pokud použiju addRule() na hidden, pravidlo se mi správně zpracovává, ale nepřidá to pravidla pro js validaci. Když opominu použití, tak je to možná i chyba.

Samozřejmě tu je otázka, proč mít pravidla na na hidden input :). Někdy se to hodí ve spojení s JS, pak můžu nechat validaci dál na Nette a nepsat si to samé znovu jen pro hidden input.

Krom toho myslím, že když už je možné pravidlo přidat, tak by Nette mělo vygenerovat pravidla pro JS.

Lopata
Člen | 139
+
0
-

Jediný případ, kdy by se v hidden poli ocitla nějaká špatná hodnota, je kdyby se někdo snažil na tvou stránku zaútočit. Takového člověka stejně javascript nezastaví a pomůže jedině server. Proto tvrzení někdy se to hodí není pravdivé a validace na straně klienta je úplně zbytečná.

baal
Člen | 34
+
0
-

Nemyslím si, že je to jediný případ. Např. budu mít nějakou komponentu v JS, která bude spolupracovat s uživatelem. Údaje budu chtít odeslat spolu s formulářem, vyplním tedy hidden pole hodnotami. Zároveň je nežádoucí, aby uživatel odeslal formulář bez vybrání některých položek v JS komponentě (a tedy naplněním hidden pole).

Samozřejmě o validaci se může postarat JS komponenta, ale! Když už můžu v PHP k hidden inputu přidat pravidlo (FILLED), proč se nepřidávají i data-nette-rules?

Je k tomu nějaký rozumný důvod?

westrem
Člen | 398
+
0
-

A ako by si si predstavoval aby uzivatel zareagoval na chybu v hidden inpute, ktory ani nevidi? Co by sa malo focusnut?

Nette je FW, ktory nerobi vsetko nasilu aby to tam bolo, ale pozera sa aj po realnej vyuzitelnosti, tu v tomto pripade nevidim.

redhead
Člen | 1313
+
0
-

Protože by uživateli vyběhl alert „Vyplň neviditelné pole, protože je prázdné“? Nedává to smysl.

// pozdě..

Editoval redhead (13. 12. 2010 23:36)

baal
Člen | 34
+
0
-

Nevím jestli se špatně vyjadřuji nebo odpovídáte bez čtení. Tak za 1. hidden input se validuje. Je to sice jen na PHP straně, ale validuje. Tudíž to Nette povoluje a POUZE nepředává data-nette-rules, tudíž nejede na straně klienta, ALE! na straně serveru to možné je.

Dále píšu, že mám JS KOMPONENTU, rozumíte? Myslím to tak, že komponenta HIDDEN INPUT VYPLNÍ. Tj. uživatel má možnost pole vyplnit tím, že použije danou JS komponentu. ANO, validaci může provádět přímo JS KOMPONENTA, nicméně v mém případě bude dělat to samé jako Nette.

Všimněte si, že nechci aby se do Nette implementovalo něco, co tam není. Ono to tam je, ta možnost tam je. Já mohu nastavit pravidla pro hidden pole. Nette mi to povolí, ALE už nevyplní data-nette-rules. Z vašeho pohledu je blbost i validace na straně serveru (ale Nette to dovoluje). Vy nemáte využití, já ano. Tudíž mě pouze zajímá, proč se u hidden pole nepřenáší data-nette-rules, když je validace na straně serveru možná?

Nemyslím si, že přidání data-nette-rules i k hidden inputu zásadně ovlivní funkčnost. Rád si přečtu vaše argumenty, třeba se i něčemu přiučím. Ale zatím mi připadá, že jste si přečetli název a na příspěvek kašlete :(.

redhead
Člen | 1313
+
0
-

Co se týče validace na serveru, neřekli jsem, že je to blbost! Je to kvůli bezpečnosti, aby nějaký více zkušený uživatel nepřenášel na server něco co tam nemá být (změnou parametru v url při GETu nebo v požadavku při POSTu).

A to že se negenerují nette-rules je už implikace toho, že uživatel to pole nevidí a nijak s ním nemůže pracovat. Pokud ho plníš přes nějaký svůj skript, je to problém toho skriptu.

Editoval redhead (14. 12. 2010 0:21)

Lopata
Člen | 139
+
0
-

Pokud ti jde o tohle, nic ti nebrání v tom svém scriptu použít metodu Nette.validateRule. Nemůžeš ale očekávat, že pro natolik ojedinělý případ bude podpora v samotném frameworku.

redhead
Člen | 1313
+
0
-

Jediný co by šlo, posílat data-nette-rules, ale validační skript by je sám o sobě na hiddenech ignoroval, ty bys si pak sám volal validační metodu a sám řídil její výstup. Nicméně ve většině případech to nikdo nevyužije a bude se zbytečně vypisovat a posílat něco, co tam nemusí být.

Je to dost individuální záležitost a pro takový jednorázový použití je zbytečné, aby se něco takového přidalo do Nette.

baal
Člen | 34
+
0
-

Lopata napsal(a):

To by bylo vyhovující řešení, díky za nápad ;).

Máte pravdu, asi by to bylo zbytečné. Využiji navrhované řešení. Jen jsem zapřemýšlel nad tím, proč se u hidden inputu nepřenáší data-nette-rules. Každopádně děkuji za názory :).