Validace prvku v závislosti na své a hodnotě druhého (čas od < čas do)

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

Ahoj,

mám formulář, který má dvě políčka (čas od, čas do) chci na první pohled jednoduché pravidlo, že čas od bude menší než čas do. Chtěl bych obě validace JS a PHP.

Bohužel nevím jak na to. Přijde mi že to nette pravidlama nejde (jestli jo budu vděčný, za popostrčení). A když si udělám vlastní pravidlo s nějakým callbackem, tak to jak v php tak v js dostane jako argument ten jeden control. K hodnotě druhého, bych se musel dobrat nějakou cestou, přes rodiče a to není pěkné, navíc bych musel znát jeho jméno, což neni univezální…

Takže jde to nějak řešit? Případně jak jste něco podobného řešili, řekl bych že to není až tak exotický problém. Díky.

jtousek
Člen | 951
+
0
-

Tohle je trochu komplikovanější a to i v případě, že by nešlo o čas nebo datum ale jen o čísla.

Vlastně jde o validační pravidlo na úrovni formuláře (nikoli na úrovni formulářového prvku – inputu) neboť hledí na hodnoty více prvků. Pravidla nad prvky sice mohou být podmíněná, což závislosti na ostatních prvcích formuláře do jisté míry porkrývá, ovšem přímé porovnávání hodnot dvou prvků nikoli.

Nevím o tom, že by Nette něco takového podporovalo. V nových formuářích to doufám bude, ale ty budou až ve verzi 2.1.

Jinými slovy, tohle si musíš zkontrolovat sám po odeslání formuláře. Pokud to chceš i do JS tak to budeš psát 2×.

bojovyletoun
Člen | 667
+
0
-

V pohodě :) (javascript by se řešil podobně: je tam podobný interface: jen stačí přidat funkci do Nette.Validators

Editoval bojovyletoun (4. 6. 2011 2:11)

jtousek
Člen | 951
+
0
-

Zajímavé. Jak dlouho tohle funguje? :)

Filip Procházka
Moderator | 4668
+
0
-

Zhruba tak dlouho, co existují validační pravidla. Jenom to asi nikoho nenapadlo použít.

Ani
Člen | 226
+
0
-

bojovyletoun: Hmm, tak to mě nanapdalo dát tam ty hodnoty jako pole :) Do data atributu pro JS to taky vygeneruje jména obou inputů. Super, díky.