(control)->addFilter() nefunguje na prázdném prvku?
- Odo
- Člen | 48
Ahoj všem,
narazil jsem na to, že když mám
$form->addText(...)->addFilter(...)
, tak pokud je hodnota
input ''
, addFilter se vůbec nezavolá. To je záměrné
chování?
Moje zamýšlené použití je nahradit prázdný vstup datepickeru
aktuálním datem.
Zkoušel jsem si hrát s jQuery, ale nevím, kam navěsit event, abych
nezprasil validaci formuláře a filtr se zavolal až před skutečným
odesláním dat (formulář odesílám AJAXem z Bootstrap Modal dialogu). Přes
addFilter()
mě to přijde jako nejčistší řešení.
Zatím to řeším ve xxxFormSucceeded()
, což je otrava,
protože to musím u každého formuláře zapsat ručně.
(Nette 2.4)
Editoval Odo (10. 4. 2020 17:42)
- Odo
- Člen | 48
Tak jsem na to přišel. Pokud by to někoho zajímalo:
<?php
$form->add...(...)
->addCondition($form::BLANK)
->addFilter(function($value) {
// zavolá se pouze při prázdné hodnotě
})
->endCondition()
->addFilter(function($value) {
// zavolá se pouze při neprázdné hodnotě - kvůli setRequired(false)
})
->setRequired(false);
?>
Editoval Odo (15. 4. 2020 16:27)