[?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!');