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

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

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!');
phx
Člen | 651
+
0
-

Pravda.

Jen me to prekvapilo, ze jedno se to doplni samo a jednou ne.