Zpracovani casti formulare
- Ani
- Člen | 226
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
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)
- DocX
- Člen | 154
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);
}
?>
- _Martin_
- Generous Backer | 679
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);
}