Sziasztok,
Az user profiladatait kibővítettem plusz fieldekkel, amiket különböző modulok hoztak létre, pl. cck_phone, countries, stb.
A sima text, integer típusú mezők értékeit tudom módosítani, a kérdésem az lenne, hogy hogyan tudom kódból módosítani ezeknek az egyedi fieldeknek az értékeit?
A country esetében egy ehhez hasonló struktúrában van letárolva az érték:
$field = field_get_items("user", $acc, "field_country"); $view = $field[0]; ( [iso2] => HU [country] => stdClass Object ( [cid] => 97 [iso2] => HU [iso3] => HUN [name] => Hungary [official_name] => Republic of Hungary [numcode] => 348 [continent] => EU [enabled] => 1 [language] => und ( ) ( ) ) [value] => HU [safe_value] => Hungary [safe] => Hungary )
Természetesen nem szeretném módosítani kézzel az egész tömböt, hanem valamilyen függvényt szeretnék meghívni az új értékkel, ami a megfelelő helyre beírja az értékeket.
Sima text típusú field esetén (ami szerintem baromi gagyi megoldás, de ezt írják a neten kismillió helyen), így módosítom az értéket:
Odáig eljutottam, hogyha módosítani szeretném, akkor lekérdezem a típusát:
$res = db_query("SELECT id, type, module, data FROM field_config WHERE field_name = :field_name", array(':field_name' => $field))->fetchAll(); $res = $res[0];
De hogy ezután ennek az információnak a birtokában hogyan tudom módosítani, azt már nem tudom.
Ha valaki tudja a megoldást, annak megköszönném, ha segítene.
Köszönöm,
Krisztián
Szia!
Szia!
Nem csináltam még ilyet, de szerintem először is tudnod kell az ISO2 kódját annak az országnak amire updatelni szeretnéd. (Pl HU)
Töltsd be a country objectet ez alapján:
Utána hasonlóképpen át kell írni a saját usered objectjében a megfelelő mezőket mint text tipusnál:
iso2 , value => $cc_obj->iso2
country => $cc_obj
safe_value , value => $cc_obj->name
Lehet van ennél szebb megoldás.