Pravidlo formuláře Form::FLOAT v případě podmínky addCondition nepřevádí čárku na tečku

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

Ahoj, zjistil jsem, že pokud mám ve formuláři (MVC)

$form->addText('cena', 'Cena', 10, 13)
     ->addCondition(NForm::FILLED)
       ->addRule(NForm::FLOAT, 'Položka "%label" musí být celé nebo reálné číslo.');

tak se po odeslání formuláře hodnota s desetinnou čárkou nepřevede na desetinnou tečku. Jestliže ale vynechám podmínkovou část addCondition(NForm::FILLED), tak se po odeslání čárka na tečku převede.

Nette 2.0 (2011–07–13 i 2011–08–04),
PHP 5.2.17

Majkl578
Moderator | 1364
+
0
-

To proto, že filtr pro převod té čárky se definuje jen při volání TextBase::addRule, kdežto tady voláš Rules::addRule, které to nedělá. Jestli je to bug budiž otázkou, spíš bych to nepřeváděl automaticky nikdy a nechal to určit explicitně uživatele.
Každopádně, v těhle případech musíš filtr definovat ručně:

$form->addText('cena', 'Cena', 10, 13)
	->addFilter(array('Nette\Forms\Controls\TextBase', 'filterFloat'))
	->addCondition($form::FILLED)
		->addRule($form::FLOAT, 'Položka "%label" musí být celé nebo reálné číslo.');