Wie dynamisch auf Object zugreifen?
am 06.11.2014 - 12:28 Uhr in
Hallo zusammen,
ich habe mehrere user fields wie z.B. field_1, field_2 usw. Nun möchte ich in meinem Modul auf diese Feld zugreifen was ich derzeit mit $user_fields = user_load mache. Somit kann ich über $user_fields->field_1['und'][0]['value'] den Wert abfragen. Soweit so gut.
field_1 ist jedoch dynamisch und abhängig vom node. Also bei node xy möchte ich field_1 und bei node yz field_2 usw. abfragen. Wie greife ich da auf das Object zu?
Ich habe folgendes probiert:
$dynamisch = 'field_' . $zahl; //kann also field_2, field_4, field_20 usw sein
$user_fields->$dynamisch['und'][0]['value']; //geht nicht da $dynamisch ja kein Array ist
$user_fields->'field_' . $zahl . ['und'][0]['value']; //geht nichtAktuell mache ich das sehr umständlich folgendermaßen:
$dynamisch = 'field_' . $zahl;
$array = field_get_items('user', $user_fields, $dynamisch);
$ausgabe = $array['0']['value'];Das muss noch irgendwie einfacher gehen oder???
- Anmelden oder Registrieren um Kommentare zu schreiben

Etwas eleganter funktioniert
am 06.11.2014 - 22:20 Uhr
Etwas eleganter funktioniert der Zugriff auf einzelne Felder von Enititäten in Drupal über den entity_metadata_wrapper. Neben Nodes kann man auf diese Weise auch Felder anderer Entity-Typen abfragen (user, field_collections, commerce products etc... )
Beispiele für den Umgang mit dem entity_metadata_wrapper findest du hier:
https://www.drupal.org/documentation/entity-metadata-wrappers
Anwendung wie folgt:
<?php
$wrapper = entity_metadata_wrapper('node', $node);
$field_value = $wrapper->FIELDNAME->value();
?>
SteffenR
Besten Dank!!! Funktioniert
am 07.11.2014 - 11:47 Uhr
Besten Dank!!! Funktioniert super damit. Schön ist, dass man nicht nur abfragen sondern auch setzen kann.
C-tecx schrieb Besten Dank!!!
am 07.11.2014 - 14:28 Uhr
Besten Dank!!! Funktioniert super damit. Schön ist, dass man nicht nur abfragen sondern auch setzen kann.
Praktisch am entity_metadata_wrapper ist halt auch, dass du so bspw. auch auf referenzierte Entities in deiner gewrappten Entity direkt zugreifen kannst (bspw. im Fall einer Field-Collection oder bei Paragraphs etc.)
SteffenR