Místo chyby NULL v alertu validace formu

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

Ahoj, mám formulář pro jednoduchou registraci, ale ať dělám, co dělám, vždy při validační chybě alert vrátí null. Co s tím? Kód:

<?php
protected function createComponentRegisterForm()
	{
    $form = new Form;

    $form->addText('name', 'Jméno:')
     ->addRule(Form::FILLED, 'Zadejte jméno')
     ->addRule(Form::MIN_LENGTH, 'Zadané jméno je příliš krátké, zvolte si jméno alespoň o %d znacích', 5);

    $form->addText('email', 'E-mail:')
     ->setEmptyValue('@')
     ->addRule(Form::EMAIL, 'E-mailová adresa není platná');


    $form->addPassword('password', 'Heslo:')
     ->addRule(Form::FILLED, 'Zvolte si heslo')
     ->addRule(Form::MIN_LENGTH, 'Zadané heslo je příliš krátké, zvolte si heslo alespoň o %d znacích', 8);

    $form->addPassword('password2', 'Heslo pro kontrolu:')
     ->addRule(Form::FILLED, 'Zadejte heslo ještě jednou pro kontrolu')
     ->addRule(Form::EQUAL, 'Zadané hesla se neshodují', $form['password']);

    $form->addProtection('Vypršel ochranný časový limit, odešlete prosím formulář ještě jednou');

    $form->addSubmit('register', 'Registrovat');

    $form->onSubmit[] = array($this, 'registerFormSubmitted');

    return $form;
	}
?>

0.9.1 (revision dc607f0 released on 2009–09–18)
5.2 verze běžící na 5.3, Apache 2.2.12 Win

Ondřej Mirtes
Člen | 1536
+
0
-

Pro použití v Application slouží AppForm, ne Form.

Jerry123456789
Člen | 37
+
0
-

Hups, chybička se vloudila. To bohužel nic nevyřešilo, když nechám formulář prázdný a odešlu, alert vyhodí null.

Ondřej Mirtes
Člen | 1536
+
0
-

Ty jo, tak to nevím. Nic s rendererem a ClientScriptem tam neděláš… Jak to vykresluješ?

Zkus jen tak na zkoušku udělat tenhle jednoduchý formulář:

protected function createComponentTestForm() {
 $form = new AppForm;

 $form->addText('test', 'Testovací text')
  ->addRule(Form::FILLED, 'Vyplňte testovací text!');

 $form->addSubmit('submit', 'Odeslat');

 return $form;
}

a v šabloně ho vykreslit přes:

{control testForm}
Jerry123456789
Člen | 37
+
0
-

1. renderuju přes widget

2. nemůžeš tam mít addSubmit(‚submit‘);, ⇒ InvalidArgumentException:Name ‚submit‘ is not allowed due to JavaScript limitations.

3. null :-(

//tak u toho mýho formu změna, předtim (Form) bylo null všude, teď (AppForm) je jen při více chybách zároveň, pokud je jedna chyba, hláška je vpohodě. Ale občas i toto neplatí, prostě to dá null i když je jen jedna chyba. Davide!! Pomoz!

Editoval Jerry123456789 (20. 10. 2009 22:36)

Ondřej Mirtes
Člen | 1536
+
0
-

Mno, možná je to kvůli tomu, že ty dodatečný podmínky (EMAIL, MIN_LENGTH, EQUAL) bys tam měl mít až za addCondition(Form::FILLED)->, ale je to divný. Zkus to.

Myslím to takhle (udělej si to obdobně u všech inputů):

$form->addText('email', 'E-mail:')
     ->setEmptyValue('@')
     ->addCondition(Form::FILLED)
     ->addRule(Form::EMAIL, 'E-mailová adresa není platná');
David Grudl
Nette Core | 8228
+
0
-

Máš zdroják kódovaný v UTF-8?

Jerry123456789
Člen | 37
+
0
-

Měl jsem cp1250, po přehození na UTF-8 vše funguje. Díky davide, ale proč?? I s cp1250 mi to občas hlášku vyhodilo.

Honza Kuchař
Člen | 1662
+
0
-

Ale jen pokud tam nebyly háčky a čárky. Kdysi jsem na to taky narazil.