Místo chyby NULL v alertu validace formu
- Jerry123456789
- Člen | 37
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
- Jerry123456789
- Člen | 37
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
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
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
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á');
- Jerry123456789
- Člen | 37
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.