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 | 224
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
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.');