Form – ignoruje mnou zadaný validační text
- s.e.m.a
- Člen | 6
Dobrý den,
vela se omlouvám za velmi začátečnickou otázku – respektive mi hlava nebere proč mi nefunguje základní kód. Problém je v tom, že mi form nechce, pokud nezadám „name“ zobrazit hlášku „Huhu?“, ale zobrazuje nějaký defaultní text ať vyplním pole. Pokud jsem zkusil nahradit FILLED → INTEGER tak se mi nikdy nepovedlo vyvolat chybovou hlášku – ačkoliv jsem zadal do pole nečíselnou hodnotu – absolutní ignor mnou zadaných Rule.
namespace Nette;
use Tracy\Debugger;
header('Content-Type: text/html; charset=utf-8');
require 'Nette/loader.php';
Debugger::enable();
$form = new Form;
$form->addText('name', 'Jméno:')->addRule(Forms\Form::FILLED, "huhu?");
$form->addText('email','E-mail');
$form->addCheckbox('promo','vzkaz');
$form->addTextArea('text','Vzkaz');
$form->addSubmit('send','Odeslat');
echo $form;
Děkuji za trpělivost při odpovědi na můj pravděpodobně velice triviální dotaz.
Roman
- jiri.pudil
- Nette Blogger | 1032
Za to zřejmě může HTML5 validace v prohlížeči. Dá se vypnout takto:
$form->elementPrototype->novalidate = TRUE;
Editoval jiri.pudil (21. 8. 2014 8:53)
- David Matějka
- Moderator | 6445
Vypne to pouze html5 validace. Serverove validace samozrejme zustanou. Pokud chces client-side validace dle definovanych pravidel, pouzij netteForms.js
- Robin Martinez
- Člen | 89
kdyz tam pridam setRequired a pridam metodu isSuccess, tak to jede
<?php
require 'Nette/loader.php';
use Nette\Forms\Form;
$form = new Form;
$form->addText('name', 'Jméno:')->setRequired('Zadejte prosím jméno');
$form->addText('email','E-mail');
$form->addCheckbox('promo','vzkaz');
$form->addTextArea('text','Vzkaz');
$form->addSubmit('send','Odeslat');
if ($form->isSuccess()) {
echo 'Formulář byl správně vyplněn a odeslán';
$values = $form->getValues();
dump($values);
}
echo $form;
a tohle mi jede taky
$form->addText('name', 'Jméno:')->addRule(Form::INTEGER, 'cislo?');
ale s tim Form:FILLED se validace sice provede, protoze podminka isSuccess neprobehne, jen se nejakym zpusobem neukaze ta hlaska o vyplneni…
Editoval 3ugeene (21. 8. 2014 12:46)
- s.e.m.a
- Člen | 6
Hmm, tak když si zkopíruji Váš kód a spustím. Tak mi vyskočí upozorňující hláška, ale ne ta, kterou jste si nadefinoval ale ve znění: „Vyplňte prosím toto pole“. Pokud zakáži validaci na klient side:
$form->elementPrototype->novalidate = TRUE;
tak nedojde k ničemu. Required je úplně ignorován… Ach jo to mi to s tím Nette začíná :)
- Robin Martinez
- Člen | 89
co jiny prohlizec a verze nette? Jen tak pro jistotu…
Mne to jede jak ve firefoxu, safari i chrome. Vic tu ted nemam. A kdyz pridam to zakazani validace, tak to jede taky…
Editoval 3ugeene (21. 8. 2014 12:42)
- David Matějka
- Moderator | 6445
a mas tam opravdu to isSuccess()
? bez toho se totiz nevyvola
validace…
- David Kudera
- Člen | 455
Třeba u ručního vykreslování bývá většinou důvodem, že lidi
zapomenou ty chybový hlášky někde taky vypsat, ale pokud nefunguje ani
echo $form
..
Editoval David Kudera (21. 8. 2014 12:44)
- David Matějka
- Moderator | 6445
Zkusil jsem to a jde to bez problemu – pri vypnute html5 validaci se vedle inputu zobrazi hlaska… Co mas za verzi nette? (jen pro poradek, ale nemyslim, ze to bude mit vliv)
Editoval matej21 (21. 8. 2014 12:59)