generovanie formularu z dat z modelu
 
- Bernard Williams
- Člen | 207
Nazdárek,
jde to třeba takto:
    public function actionEdit($id) {
        $sql = dibi::query('SELECT * FROM ['.TABLE_XY.'] WHERE id=%i;', $id);
        if (count($sql)) {
            $form = $this->getComponent('edit');
            $row = $sql->fetch();
            $form->setDefaults($row);
            $this->template->form = $form;
        }
        else {
            $this->flashMessage('... not exist.');
            $this->redirect('Presenter:');
        }
    }
Bernard
Editoval Bernard Williams (18. 4. 2010 18:27)
 
- marek.dusek
- Člen | 99
Tak ten příklad by mě hodně zmátl – zaprvé je to jen „půlka“ (ty bys na jeho místě pochopil, co je v tom $this->getComponent(‚edit‘)?) a zadruhé je to zbytečně složitě ;) Když už, tak:
$this['edit']->setDefaults($sql->fetch);
.. nicméně nemyslím, že to odpovídá na původní dotaz, který je napsán tak strašně, že poprosíme autora, aby se nadechl a zkusil to napsat jako člověk ;)
EDIT: a ještě tam máš gramatickou chybu – not exists :-)
Editoval marek.dusek (18. 4. 2010 18:46)
 
- Mikulas Dite
- Člen | 756
Podle mě se jedná o to, že mino potřebuje ty data jak v
renderFoo(), tak v createComponentBar(). A nemusí se
jednat jenom o setDefault[s]. To se ale zjednoduší, když budou
data zabalená v modelu (a snad tvoje db nějakou cache má, takže výkonově
je to skoro jedno).
 
- redhead
- Člen | 1313
Nedalo by se nějak využít informací o tabulce? Jsou tam na to nějaké metody, které ti řeknou typy sloupců, atd..
dibi::getDatabaseInfo()->getTable($name)->...
By ti to mohla vracet nějaká metoda v modelu (případně můžeš cachovat) a podle toho vytvářet automaticky formuláře, možná včetně max délky znaků u VARCHAR atd..
marek.dusek napsal(a):
$this['edit']->setDefaults($sql->fetch);
Ty zas chybu u fetch() ;)
