[?BUG?] Pravidla a filtry ve formulari
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- phx
- Člen | 651
Zdravim…
Je mozne, ze jsem se k tomu jeste neprocet ve foru. Docela dlouho jsem tu nebyl, ale ted jsem narazil na zajimavou vec.
Kdy vytvarim formularovy prvek do formulare:
$form->addText('cena', 'Cena', 4)
->addRule(Form::FLOAT, 'Cena musí být číslo!');
tak se automaticky prida filter pro float. Diky tomu mi policko vrati float hodnotu a nejsou s tim problemy napriklad pri ukladani do DB (, vs .).
Jenze toto nefunguje pri tento konstrukci (cena je nepovina)
$form->addText('cena', 'Cena', 4)
->addCondition(Form::FILLED)
->addRule(Form::FLOAT, 'Cena musí být číslo!');
Docela me to prekvapilo.
Problem je v Rules::addRule() v podmince pro pouze prime pravidla. Ve 2 konstrukci totiz pravidlo FLOAT neni prime:(
if ($this->parent === NULL) {
// notify only direct rules
$this->control->notifyRule($rule);
}
To je schvalne? Osobne mi to prijde divny.
- PetrP
- Člen | 587
Nojo ale na co by si přetypovával při takovejhle čachrech?
$form->addText('cena', 'Cena', 4)
->addConditionOn($form['neco'],Form::FILLED)
->addRule(Form::NUMBER, 'Cena musí být celé číslo!');
->elseCondition()
->addRule(Form::BOOL, '...');
->addCondition(Form::FILLED)
->addRule(Form::FLOAT, 'Cena musí být číslo!');