Formulář – jak na prázdné hodnoty
- Michal Schneider
- Člen | 13
Ahoj,
téma vkládání prázdných hodnot z formuláře do DB už bylo řešeno tady, tady a tady. Řešení je jednoduché, tohle samozřejmě funguje:
foreach ($values as & $val) if ($val === '') $val = NULL;
Nebo lze také prázdnou hodnotu ze seznamu hodnot úplně vyhodit pomocí unset.
Nicméně jsem se přece jen chtěl zeptat, jestli není ve 2.1 nějaké elegantnější řešení? Tím samozřejmě nechci říct, že bych chtěl, aby Nette dělalo všechno za mě, ale přece jen je to skvělý fw, takže člověk postupně zleniví a spíš má pocit, že o elegantním řešení neví, než že by neexistovalo.
Dík moc a omlouvám se, jestli už je tohle téma tabu ;-)
P.S.: Posílám měsíčně nějaké drobné na člověk v tísni a podobné ptákoviny, klidně bych něco přispíval i na Nette, jde to nějak jednoduše?
- Etch
- Člen | 403
No stejně tak by mělo fungovat, pokud by sis překryl metodu
getValues
v nějakém BaseFormu.
public function getValues($asArray = FALSE){
$values = parent::getValues($asArray);
foreach ($values as & $val) if ($val === '') $val = NULL;
return $values;
}
Nebo něco na ten způsob.
Popřípadě si přidáš do BaseFormu metodu
public function getFooValues($asArray = FALSE){
$values = $this->getValues($asArray);
foreach ($values as & $val) if ($val === '') $val = NULL;
return $values;
}
Editoval Etch (2. 2. 2014 16:53)
- Michal Schneider
- Člen | 13
Dík za inspiraci, rozumnější je asi druhá varianta, protože si dokážu představit, že ne vždy člověk chce mít defaultní hodnotu NULL.