Callback v addRule sa nezavolá z render metódy
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jurajvt
- Člen | 18
Už si s tým chvíľu lámem hlavu a začínam byť bezradný.
Vo formulári mám pravidlo s callback, ktoré mi funguje v továrničke
createComponentUserForm()
. Keď ho však presuniem do render
metódy renderNew()
, callback sa nezavolá. Skúšal som aj
vlastný validator – rovnaký výsledok. Iné pravidlá mi v render
fungujú, len to s callback nie.
UserPresenter
public function renderNew()
{
/** @var Form $form */
$form = $this['userForm'];
$form['email']->addRule(callback($this, 'emailExists'), 'Zadaná e-mailová adresa už existuje. Zvoľte prosím inú.');
$form['submit']->caption = 'Vytvoriť účet';
}
protected function createComponentUserForm() {
$form = new Form;
...
$form->addText('email', 'E-mailová adresa')
->addRule(Form::EMAIL, 'Nesprávny formát e-mailovej adresy')
->setRequired('E-mailová adresa musí byť zadaná');
$form->addSubmit('submit', 'Uložiť');
$form->onSuccess[] = $this->userFormSubmitted;
return $form;
}
public function emailExists($item) {
return $this->user->findOneBy(array('email' => $item->value)) ? false : true;
}
Editoval jurajvt (7. 12. 2014 22:38)