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

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…

Mariocz
Člen | 52
+
0
-

Moc nechápu jak při uložení nastavuješ defaultní hodnoty.. Dumpni si proměnnou $obj.

Jiří Nápravník
Člen | 710
+
0
-

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)