Problem s create a onSubmit action
- gerades
- Člen | 40
Zdravim,
mam formular v Presenteru (formular obsahuje pouze Checkboxy a tlacitko onSubmit). Kdyz chci aby byl checkbox vybrany, udelam v „createForm“ metode tohle: $form->addCheckbox(‚Nazev‘, ‚Nazev‘)->setValue(1); Kdyz nevybrany, udelam: $form->addCheckbox(‚Nazev‘, ‚Nazev‘)->setValue(0);. Tohle funguje, jsou vybrany/nevybrany jak potrebuji.
Problem nastava, kdyz manualne vyberu nektere dalsi checkboxy a kliknu na submit:
- v metode ktera je namapovana na onSubmit, nemam vybrane checkboxy, ktere jsem manualne naklikal… Tzn, kdyz zavolam $values = $form->getValues();, tak v $values jsou komponenty nastaveny tak, jak jsem je nastavil v „createForm“ metode.
Napada nekoho co by mohlo byt spatne? Predem moc diky.
- gerades
- Člen | 40
public function adjustTableFormSubmitted(AppForm $form) {
if ($form['ok']->isSubmittedBy()) {
$values = $form->getValues();
foreach ($values as $key => $value) {
// a tady neni co bylo manualne vybrano...
}
}
}
protected function createComponentAdjustTableForm($name) {
$form = new AppForm($this, $name);
$columnNames = $this->dataSource->result->getInfo()->getColumnNames();
foreach ($columnNames as $key => $value) {
$item = $this->getColumn($value); // metoda, ktera vrati sloupec z Gridito, pokud tam neni, tak null
if (isset($item)) {
$form->addCheckbox($value, $value)->setValue(1);
} else {
$form->addCheckbox($value, $value)->setValue(0);
}
}
$form->addSubmit("ok", "Apply");
$form->onSubmit[] = array($this, 'adjustTableFormSubmitted');
return $form;
}
- Chbox
- Člen | 125
tak pokud tam máš natvrdo setValue(0), tak ti to bude vždycky vracet FALSE a nebude brát ohled na hodnoty z DB ani z user inputu
Zkus si vytahnout hodnoty přes $this->getHttpRequest()->post a pak podle toho to bud naplnit hodnatama z post nebo z DB, kdyz je to prvni zobrazeni..
Editoval Chbox (25. 2. 2011 23:01)
- gerades
- Člen | 40
Chbox napsal(a):
tak pokud tam máš natvrdo setValue(0)
No a jak muzu odznacit checkbox, kdyz nemuzu pouzit setValue(0)?
A predpokladam, ze kdys nastavim setValue(1) tak to zase nemuzu odznacit, ze? Jak to teda funtuje??? :) To mi hlava nebere…
Editoval gerades (26. 2. 2011 9:45)
- Chbox
- Člen | 125
tady máš příklad, kterej bez problému funguje, akorát stačí naplnit $data vlatní hodnotou..
protected function createComponentForm($name)
{
$data = array(
'a' => TRUE,
'b' => FALSE,
'c' => TRUE,
'd' => FALSE,
);
$form = new AppForm($this, $name);
foreach($data as $key => $item) {
$form->addCheckbox($key, $key);
}
$form->addSubmit('ok', 'Odeslat')
->onClick[] = callback($this, 'sendForm');
$form->setDefaults($data);
}
public function sendForm(SubmitButton $form)
{
$data = $form->form->values;
Debug::dump($data);
}