Missing setRequired(TRUE | FALSE) on field abc in form
- David Grudl
- Nette Core | 8227
Děcka, u všech formulářových prvků, které mají validační pravidla, je potřeba explicitně určit, jestli jsou povinné, nebo ne.
Buď postaru:
// povinný
$form->addText('name')
->setRequired()
->addRule(...)
->addRule(...);
// nepovinný
$form->addText('name')
->addCondition($form::FILLED)
->addRule(...)
->addRule(...);
nebo nepovinný ponovu od 2.4:
// nepovinný
$form->addText('name')
->setRequired(FALSE)
->addRule(...)
->addRule(...);
Tohle byste beztak všichni měli mít nastavené, protože jinak to není úplně dobře. Uživateli by mělo být u každého prvku jasné, zda je povinný a tudíž ho musí vyplnit, a to dřív, než mu vynadá validace.
Nette 2.4 vás upozorní, pokud označení povinnosti/nepovinnosti chybí, a to chybovou hláškou „Missing setRequired(TRUE | FALSE) on field abc in form“. Tak to prosím doplňte a nezakládejte kvůli tomu na GitHubu isssues. Je to záměr.
Od verze 3.0, protože tou dobou budeme mít všechny prvky jednoznačně
označené, se stane režim „nepovinný“ výchozím (ne, teď to tak není,
má-li prvek nějaká validační pravidla; vyzkoušejte si to), takže všechny
setRequired(FALSE)
bude v budoucnu možné odstranit. Vlastně
můžete toho dosáhnout již teď, pokud třeba zakládáte nový projekt, nebo
pokud jste u všech formulářů fakt poctivě doplnili chybějící
setRequired()
. A to tak, že v boostrap.php zavoláte:
Nette\Forms\Controls\BaseControl::enableAutoOptionalMode(); // zapni budoucnost 3.0
Filtry addFilter()
jsou speciální formou validačního
pravidla, takže pro ně to platí taktéž.