Praktické využití modulu Devel (získání hodnot pole)
Vložil/a Anonymous, 5 Květen, 2017 - 11:28
Kategorie: Jak na to?
Týká se verze: Drupal 7.x
Zprovoznil jsem si modul Devel a dívám se na výstupy (dpm($view);). Moc se v tom zatím neorientuju, vidím např. $…->result[0]->field_field_barvy[0][‚raw‘][‚tid‘]. Nevím co přesně znamenají ty tři tečky, asi se tam doplňuje proměnná. Je to ale funkční i jako $row->field_field_barvy[0][‚raw‘][‚tid‘]. Dá se z toho výpisu (dpm($view);) zjistit např. jak projít všechny hodnoty (barvy[0], barvy[1]…)? Aby byl výsledek ve stylu field_field_barvy[AUTOMATICKY_DOPLNENA_HODNOTA][‚raw‘][‚tid‘]. 
Zkuste si vypsat třeba
Zkuste si vypsat třeba dpm($row->field_field_barvy); dostanete pole a můžete s ním zacházet jako s každým polem (foreach apod.).
Tj. např.
$barvy_array = $row->field_field_barvy;
foreach ($barvy_array AS $item) {
(…)
Nefunguje to tak jak chci
$data = $row->field_field_barvy; foreach ($data as $key ⇒ $value) { print „<key>“.$key.„</key>“; print „<value>“.$value.„</value>“; }Výsledek je: Alternativně jsem zkusil:$data = array($row->field_field_barvy[0][‚raw‘][‚tid‘]); foreach ($data as $key ⇒ $value) { print „<key>“.$key.„</key>“; print „<value>“.$value.„</value>“; }Výsledek je: To je správně (1 = červená atd.), ale je to výsledek jen pro první hodnotu toho pole. Vypsáním dpm($row->field_field_barvy); vidím (Object) stdClass a dále nid, node_title … field_field_barvy – 0 (Array, 2 elements) – raw – tid. Poradíte?Tak místo print $value dejte
Ad první příklad -
tak místo print $value dejte jen dpm($value) a uvidíte, že je to zase pole... A z něj musíte získat teprve hodnotu.
Ještě pozor na vypisování hodnot, které se tahají přímo z databáze, často je třeba ošetřit je nějakou "bezpečnostní" funkcí, např. check_plain()...
Už to mám, ale ještě prosba o radu (stdClass Object)
foreach ($row->field_field_barvy as $data) { print „<value>“.$data[‚raw‘][‚tid‘].„</value>“; }Nevím ale jak získat hodnoty z stdClass Object (k výše uvedenému). Věděla byste jak na to?Z objektu se vypisuje pomocí
Z objektu se vypisuje pomocí $nazev_objektu->hodnota
například: $node->title
Upozorňuji opět na nutnost ošetřit hodnoty při výpisu např. přes check_plain()
Doporučuji k tomu náš tutoriál http://www.squelle.com/cs/publikace/zaklady-php-pro-drupal, jsou tam jen hodně jednoduché příklady, ale pomůže Vám to právě v základní orientaci, abyste netápal a nezvykl si dělat věci špatně :-)
Tutoriál
http://stackoverflow.com/…array-in-php). Snad se tím brzy nějak prokoušu.ten „navod“ to je jemne
ten „navod“ to je jemne receno hloupost, staci jednoduse $pole = (array) $objekt; – akorat nevidim duvod to delat, kdyz v podstate jediny rozdil mezi polem a stdClass je pouziti „sipky“ namisto hranatych zavorek.
tohle skonci spatne :(
tohle skonci spatne :(
Praktický příklad
hook_preprocess_TEMPLATE(&$v
hook_preprocess_TEMPLATE(&$vars) kde TEMPLATE pravdepodobne bude views_view_field (+ mozna bych pouzil primo .tpl.php pro ten konkretni field v tom konkretnim view).