web-dev-qa-db-fra.com

Comment charger une collection de champs à partir d'un nœud?

J'ai un nœud qui contient quelques collections de champs.

Quand je regarde la sortie de node_load(), je vois:

[field_rich_text_group] => Array
        (
            [und] => Array
                (
                    [0] => Array
                        (
                            [value] => 6
                        )

                    [1] => Array
                        (
                            [value] => 7
                        )

                    [2] => Array
                        (
                            [value] => 8
                        )

                )

        )

Quelle fonction API puis-je utiliser pour charger réellement les données de champ contenues dans la collection qui ont un entity_id de 6, 7, 8, etc.?

73
Justin

Ah! J'aurais dû regarder dans le module de collecte sur le terrain:

entity_load('field_collection_item', array($item_id))
89
Justin

Il existe également une fonction wrapper qui fait la même astuce:

field_collection_item_load($id, $reset = FALSE)

ou selon commentaire, utilisez:

field_collection_item_load_multiple($ids = array(), $conditions = array(), $reset = FALSE)

pour charger plusieurs collections (par exemple si vous avez un Ajoutez plus de boutons ).

40
Vasiliy Grotov

field_collection_field_get_entity () doit être utilisé afin de charger la révision correcte.

Exemple d'utilisation:

$node = node_load(1);
$items = field_get_items('node', $node, 'field_fc');
foreach ($items as $item) {
 $fc = field_collection_field_get_entity($item);
 // Do something.
}
21
jonhattan

Vous pouvez utiliser entity_metadata_wrapper depuis le module Entity API :

$node_wrapper = entity_metadata_wrapper('node', $node);
$field_collection = $node_wrapper->field_rich_text_group[0]->value();
dpm($field_collection);

Vous pouvez également boucler toutes les collections:

$node_wrapper = entity_metadata_wrapper('node', $node);
foreach ($node_wrapper->field_rich_text_group as $field_collection_wrapper) {
  $field_collection = $field_collection_wrapper->value();
  dpm($field_collection);
}
11
milkovsky