podivne chovani setDefaults

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
geosup
Člen | 16
+
0
-

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)

frosty22
Člen | 373
+
0
-

Konkrétní příklad by byl hezčí – respektive ten kus kódu, hlavně to místo kde voláš setDefaults

Semik
Backer | 135
+
0
-

Nejsem si jistý, ale myslím, že nelze takto měnit objekt ActiveRow. Data vytažená přes toArray už logicky ano. Možná se pletu. Raději to někdo potvrďte.

Jan Mikeš
Člen | 771
+
0
-

Semik ma pravdu, objekt ActiveRow nemuzes jen tak lehce upravit, tudiz $activeRow->toArray() a pak nasledne pridavat, mazat, upravovat hodnoty je spravny pristup.

kuchuali
Člen | 15
+
0
-

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

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