podivne chovani setDefaults
- geosup
- Člen | 16
Ahojte, mam tady takovou zajimavost. V administraci pri editaci nejakeho
zaznamu si ho vytahnu z databaze (Nette\Database), cimz dostanu objekt
ActiveRow. K nemu potrebuju pridat jeste nejake prvky
($row->pole = ‚test‘;) a pak pomoci $form->setDefaults($row) nastavim
hodnoty do formulare. A tady nastava ta zajimavost. Kdyz vymazu cache,
v pohode se mi zobrazi v textovem poli i mnou rucne nastaveny prvek
„pole“. Kdyz ale dam formular odeslat a pak chci stejny zaznam znovu
zeditovat, uz tam pole vyplnene neni.
Pokud ovsem pred setDefaults zavolam $row->toArray() a „pole“ nastavim, jako $row[‚pole‘] = ‚test‘, vse funguje OK.
Poradite mi nekdo, prosim, proc to nefunguje i bez toho toArray() ?
EDIT: Ted jsem si vsiml, ze kdyz tam mam $row->toArray() a pak nastavim hodnoty jako do objektu (tzn. $row->pole = ‚test‘;), tak to taky funguje v pohode. Ale vyhodim toArray() a zase se to chova divne…
Editoval geosup (27. 6. 2013 10:22)
- kuchuali
- Člen | 15
Lexi napsal(a):
Semik ma pravdu, objekt ActiveRow nemuzes jen tak lehce upravit, tudiz $activeRow->toArray() a pak nasledne pridavat, mazat, upravovat hodnoty je spravny pristup.
A muzu tedy zeptat (z dokumentaci jsem to nepochopil), metoda toArray() vrati asociativni masiv, kde klice jsou jmena sloupcu, nebo ne?
- Semik
- Backer | 135
kuchuali napsal(a):
Lexi napsal(a):
Semik ma pravdu, objekt ActiveRow nemuzes jen tak lehce upravit, tudiz $activeRow->toArray() a pak nasledne pridavat, mazat, upravovat hodnoty je spravny pristup.
A muzu tedy zeptat (z dokumentaci jsem to nepochopil), metoda toArray() vrati asociativni masiv, kde klice jsou jmena sloupcu, nebo ne?
Ano