Zpracovani casti formulare

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

Mel bych dotaz,
mam jeden formular, ktery ma dve skupiny uzivatel a adresa, pri zpracovani ulozit do dvou tabulek. Existuje nejaka moznost jak ziska jen tu danou cast, treba tim ze to oznacim do skupiny?
Takhle musim vybrat jednotlive policka zvlast (to je zdlouhave a neprehledne) a to pak ulozim do databaze. Proste mi schazi (mozna to je jen o tom nevim) neco jako metoda getGroupValues.

Pripadne jaky je nejlepsi reseni kdyz zpracovavam jen cast formulare.
Diky

DocX
Člen | 154
+
0
-

Ukládání hodnot do databáze by IMHO mělo být vždy ošetřený „ručně“, tedy vypsáním konkrétních polí. Je to sice pracnější, ale zase si myslím, že pro pár řádků ruka neupadne.

Je sice pravda, že formulář kontroluje poslané hodnoty z POST a nějaké navíc/namíň ignoruje, ale jistota je jistota. Navíc pokud máš názvy FormControlů stejné jako sloupce v DB, taky to může představovat riziko ;)

Nicméně by mohlo jít:

<?php

$groupValues = array();
foreach ($form['groupa']->getControls() as $control)
	$groupValues[] = $control->value;

?>

Editoval DocX (20. 9. 2009 18:10)

David Grudl
Nette Core | 8129
+
0
-

Na tohle je šikovnější použít kontejner

DocX
Člen | 154
+
0
-

David Grudl napsal(a):

Na tohle je šikovnější použít kontejner

Nj, to je šikovný :)

Dá se taky použít vícekrát? Něco ve stylu:

<?php

$sub = new FormContainer();
$sub->addText('name', 'Your name:', 35);
$sub->addText('email', 'E-mail:', 35);
$sub->addText('street', 'Street:', 35);
$sub->addText('city', 'City:', 35);

foreach ($users as $user)
{
	$form->addComponent($sub, 'user' . $user->id)
	$form['user' . $user->id]->setDefaults($user);
}

?>
Tomik
Nette Evangelist | 485
+
0
-

DocX napsal(a):

Dá se taky použít vícekrát?

Jop.

David Grudl
Nette Core | 8129
+
0
-

Ne ;)

DocX
Člen | 154
+
0
-

David Grudl napsal(a):

Ne ;)

xD Tak co? Možná by to chtělo geneticky zkopírovat při každém tom addComponent, co?

_Martin_
Generous Backer | 679
+
0
-

David Grudl napsal(a):

Ne ;)

Ovšem nic mu nebrání v použití hezčího způsobu:

foreach ($users as $user)
{
	$sub = $form->addContainer('user' . $user->id);
	$sub->addText('name', 'Your name:', 35);
	$sub->addText('email', 'E-mail:', 35);
	$sub->addText('street', 'Street:', 35);
	$sub->addText('city', 'City:', 35);

	$sub->setDefaults($user);
}
DocX
Člen | 154
+
0
-

_Martin_ napsal(a):

Ovšem nic mu nebrání v použití hezčího způsobu:

No jo :D Vlastně bych to takhle taky normálně řešil, ale nějak mě vývoj tohoto vlákna zmátl :)