Kontrola dvou inputů – validace

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

Zdravím,
jako novopečený uživatel Nette Frameworku bych chtěl položit první dotaz ohledně formuláře.
Potřebuju zvalidovat dva inputy, kde jeden je vyplněn automaticky z hodnoty session a do druhého se má správně vyplnit tato hodnota ručně.
úryvek kódu je následující:

$form->addHidden('captcha')
		->setValue($_SESSION['captcha']);
$form->addText('cislo', '{captcha} Opište kód:') // {captcha} se mění při výpisu na obrázek
		->addRule(Form::FILLED, 'Není vyplněn kód.')
		->addRule(Form::EQUAL, 'Zadaný kód se neshoduje', $form['captcha']);

Bohužel tato validace v PHP5.3 nefunguje (Nette Framework 2.0-beta (revision 325620c released on 2011–12–19)), Respektive funguje pokud píšu kód pro verzi PHP5.2 :

$form->addHidden('captcha')
		->setValue($_SESSION['captcha']);
$form->addText('cislo', '{captcha} Opište kód:')
		->addRule(NForm::FILLED, 'Není vyplněn kód.')
		->addRule(NForm::EQUAL, 'Zadaný kód se neshoduje', $form['captcha']);

Poradí mi někdo co je špatně a proč to nejde?

Aurielle
Člen | 1281
+
0
-

Neměl bys validaci captchy řešit na straně serveru? Hodnotu hidden inputu ti může kdokoliv změnit a validace teoreticky projde.

Rellik
Člen | 104
+
0
-

Jo vím, že takhle to je celkem k ničemu, jen mě zajímá proč to nefunguje. Zatím se s NETTE seznamuju pouze na localhostu. A než vytvořím nějakou větší aplikaci, jak sem dělal doteď, bude asi chvíli trvat… :)

Šaman
Člen | 2666
+
0
-

Vím že si teď budeš myslet, že z tebe dělám lamu, ale jsi si skutečně jistý, že nepoužíváš verzi s prefixy? Jinak by ti to ty třídy NXxx vůbec nenašlo a zahlásilo chybu. Jestli jsi upgradoval Nette, tak se ujisti, že jsi staré smazal a ne jen přepsal novým.

Pokud chyba přetvává, tak popiš jak ti první kód nefunguje – něco hlásí?

Rellik
Člen | 104
+
0
-

Šaman napsal(a):

Vím že si teď budeš myslet, že z tebe dělám lamu, ale jsi si skutečně jistý, že nepoužíváš verzi s prefixy? Jinak by ti to ty třídy NXxx vůbec nenašlo a zahlásilo chybu. Jestli jsi upgradoval Nette, tak se ujisti, že jsi staré smazal a ne jen přepsal novým.

Pokud chyba přetvává, tak popiš jak ti první kód nefunguje – něco hlásí?

Jo omlouvám se na to sem zapomněl – jsou to dvě verze nette. Ta jedna je bez prefixů a ta druhá s prefixy. Nicméně to je myslím celkem fuk. Jde o to že v té jedné verzi kde je NForm to funguje – vypíše že kód nesouhlasí. U té prefixové to projede ať tam napíšu cokoliv. Jediné co zvaliduje u toho inputu, tak to že musí být vyplněn…

Rellik
Člen | 104
+
0
-

Tak sem pomazal všechny verze Nette, stáhl znovu verzi pro PHP 5.3, znovu vytvořil formulář a zatím se zdá že to funguje jak má… Jinak včera mi pak přestala fungovat i ta verze, ve které to fungovalo a to sem s formulářem vůbec nic nedělal – jen přidával funkci na zápis do DB… no uvidíme.. Nejspíš to s tím Nette nebude tak jednoduché jak se si do teď myslel…

Tomáš Votruba
Moderator | 1114
+
0
-

Rellik napsal(a):

Tak sem pomazal všechny verze Nette, stáhl znovu verzi pro PHP 5.3, znovu vytvořil formulář a zatím se zdá že to funguje jak má… Jinak včera mi pak přestala fungovat i ta verze, ve které to fungovalo a to sem s formulářem vůbec nic nedělal – jen přidával funkci na zápis do DB… no uvidíme.. Nejspíš to s tím Nette nebude tak jednoduché jak se si do teď myslel…

Ještě bych ti doporučoval promazávat složku temp, která možná mohla za načítání staré verze Nette.

Editoval Schmutzka (25. 12. 2011 15:40)