Dominique De Cooman
Gepubliceerd op Dominique De Cooman (https://dominiquedecooman.com)

Home > Drupal 7 tip : Krijg veld waardes van entity objects zoals nodes, users, taxonomy, ...

Dominique De Cooman
maandag, June 20, 2011 - 10:00
fields [1]

Deze kleine drupal 7 tip zal u helpen met het verkrijgen van waardes van entity objects zoals nodes, users, taxonomy, ...

U heeft waarschijnlijk deze datastructuur gezien tijdens het laden van nodes:

<?php
$entity 
->fieldname[language][delta] = [item];
?>

U kunt er doorheen loopen maar dit zal geen rekening houden met de taal. Er is een functie die zorgt voor het extraheren van de gegevens zodat u zich geen zorgen hoeft te maken over de taal van de gegevensstructuur:

<?php
$items 
= field_get_items('node', $node, 'field_yourfield', $node->language);
?>

U kunt hier meer vinden:
http://api.drupal.org/api/drupal/modules--field--field.module/group/field/7 [2]

BEWERK: Dit is ook een hele handige functie die gevonden kan worden op de blog van drupal7ish http://drupal7ish.blogspot.com/2011/03/getting-field-data-out-of-entitie... [3]

<?php
/**
 * Returns field values as actual entities where possible,
 * also allows selection of individual items to be returned
 */
function field_fetch_field_values($entity_type, $entity, $field_name, $get_delta = NULL, $get_key = NULL) {
  
$values = array();
  if (isset(
$entity->$field_name) && !empty($entity->$field_name)) {
    foreach (
field_get_items($entity_type, $entity, $field_name) as $delta => $item) {
      
$value = $item;
      
$keys = array_keys($item);
      if (
count($keys)==1) {
        
$key = $keys[0];
        switch (
$key) {
          case 
'nid':
            
$value = array_shift(entity_load('node', array($item[$key])));
            break;
          case 
'uid':
            
$value = array_shift(entity_load('user', array($item[$key])));
            break;
          case 
'tid':
            
$value = array_shift(entity_load('taxonomy_term', array($item[$key])));
            break;
          case 
'vid':
            
$value = array_shift(entity_load('taxonomy_vocabulary', array($item[$key])));
            break;
          case 
'value':
            
$value = $item['value'];
            break;
        }
      }
      else {
        if (
$get_key && isset($item[$get_key])) {
          
$value = $item[$get_key];
        }
        elseif (
array_key_exists('value', $item)) {
          
$value = isset($item['safe_value']) ? $item['safe_value'] : $item['value'];
        }
      }
      
$values[$delta] = $value;
    }
  }
  if (
is_numeric($get_delta)) {
    return isset(
$values[$get_delta]) ? $values[$get_delta] : NULL;
  }
  return 
$values;
}
?>


Bron-URL: https://dominiquedecooman.com/nl/drupal-7-tip-krijg-veld-waardes-van-entity-objects-zoals-nodes-users-taxonomy

Links
[1] https://dominiquedecooman.com/nl/blog-topics/fields-0
[2] http://api.drupal.org/api/drupal/modules--field--field.module/group/field/7
[3] http://drupal7ish.blogspot.com/2011/03/getting-field-data-out-of-entities.html