Formulář – jak na prázdné hodnoty

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

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
+
0
-

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
+
0
-

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.