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
+
0
-

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)

David Matějka
Moderator | 6445
+
+1
-

render se vola az po zpracovani formulare, presun to do action

jurajvt
Člen | 18
+
0
-

Ako vždy, máš pravdu. Ďakujem, funguje.