Problém se setDefaults u radioListu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- JanBE
- Člen | 62
Ahoj,
nemůžu zjistit, co dělam špatně ve formuláři:
$form = new Form;
$radio1 = array(
'1' => '',
'2' => '',
'3' => '',
'4' => '',
);
$form->addRadioList('radio1', '', $radio1);
$radio2= array(
'1' => '',
'2' => '',
'3' => '',
'4' => '',
'5' => '',
);
$form->addRadioList('radio2', '', $radio2);
$obj= $this->database->table('table')->get($this->id_row);
$form->setDefaults($obj->toArray());
$form->addSubmit('send', 'Save');
$form->onSuccess[] = callback($this, 'actionSave');
return $form;
proměnou $this->id_row definuji v metodě renderDefault($rowId) následovně:
public function renderDefault($rowId)
{
$this->template->rr = $this->database->query(dotaz);
$this->id_row = $rowId;
}
$rowId je id záznamu z db, které posílám z jedné šablony, abych mohl vypsat v druhé šabloně vypsat záznam detailněji.
Šablona s detailem se normálně zobrazí a jsou dobře nastaveny i defaultní hodnoty z db. Ale při uložení hlásí:
Call to a member function toArray() on a non-object
a ukazuje na řádku $form->setDefaults($obj->toArray());
Tento způsob setDefaults používám i jinde a zatím jsem s touto chybou problém neměl…
- Jiří Nápravník
- Člen | 710
Pokud tu $this->id_row deifnuejs v render metode a ten formulář vytváříš v továrničce, tak už je to pozde, musíš tu $this->id_row definovat v action metode, ci-li zkratka to renderDefault($id) přepiš na actionDefault($id)