Validace hesla ve formuláři
- PetrHH
- Člen | 49
Dobrý den,
asi jsem už slepý, ale nevím jak na to.
Mám tento kód:
protected function createComponentRegForm()
{
$form = new UI\Form;
$form->addText('callsign','Značka')
->setRequired('Zadejte, prosím, vaši značku');
$form->addText('name','Křestní jméno')
->setRequired('Zadejte, prosím, vaše křestní jméno');
$form->addPassword('pass','Zvolte si heslo')
->setRequired('Zvolte si, prosím, rozumné heslo');
$form->addPassword('pass1','Heslo znovu')
->setRequired('Zadejte, prosím, heslo ještě jednou pro kontrolu')
->addRule(Form::EQUAL, 'Hesla se neshodují', $form['pass']);
$form->addSubmit('reg','Zaregistrovat');
$form->onSuccess[] = $this->regFormSucceeded;
return $form;
}
Bohužel mě laděnka vždy pošle někam, nelíbí se jí $form[‚pass‘] v addRule, vypisuje chybu „Class ‚Form‘ not found“. Díval jsem se do tutoriálu, do fóra a v kouscích kódu to bylo takto. Asi jsem něco přehlédl, ale nenapadá mne co. Nevíte, prosím? Obsah tmp jsem smazal.
Díky za váš čas.
Petr
- Vojtěch Dobeš
- Gold Partner | 1316
Form::EQUAL
→ UI\Form::EQUAL
.
Nebo mé oblíbené neprůstřelné $form::EQUAL
.
Editoval vojtech.dobes (27. 2. 2013 17:09)
- PetrHH
- Člen | 49
Díky, díky, díky! To funguje. To Form::EQUAL mi fungovalo normálně když jsem používal z Nette jen ty formuláře, teď se snažím udělat celou app v Nette a „trochu“ s tím bojuji. Ještě jsem narazil na jeden problém:
$form = new UI\Form;
$form->addText('callsign','Značka')
->setRequired('Zadejte, prosím, vaši značku')
->addRule('callsignExists','Uživatel již existuje',$form['callsign']);
a pak dále
public function callsignExists($item, $arg)
{
return FALSE;
}
Dostávám chybu:
Unknown operation ‚callsignExists‘ for control ‚callsign‘. Stejný
případ, pokud jsem používal pouze formuláře z Nette, chodilo mi to.
V továrničce ne :-(.
Petr
- enumag
- Člen | 2118
@PetrHH: Tam se předává v podstatě PHP pseudo-typ callable. Což může být string s názvem fce, Closure (anonymní fce), pole kde první element je objekt a druhý název funkce, objekt s metodou __invoke, možná něco dalšího. Nette k tomu přidává další možnosti:
- místo
array($this, 'nazevMetody')
lze psátcallback($this, 'nazevMetody')
- nebo také
$this->nazevMetody
pokud $this je Nette\Object a nemá property se stejným názvem.