it-swarm.com.de

Entity Metadata Wrapper, Feldsammlung in Feldsammlung abrufen

Ich möchte den Wert einer Feldsammlung in einer Feldsammlung (mehrdimensionaler Feldinhalt) abrufen (und danach festlegen).

Das ist mein Code:

// The node is a custom content.

// I get the list of first collections fields.
$temp = field_collection_get($node,'field_top');
// Shows the structure you can see below in the screenshot.
dpm($temp->value()[0]);

// Now, I want to get the value of field_website_informations.
// I've tried several ways but I couldn't find the right way.
// The following line returns an error.
$testage = entity_metadata_wrapper($temp->value()[0], 'field_website_informations');

Ist es möglich, mit der Entity-API zu arbeiten?

Der Screenshot:

The screenshot

7
matthieu lopez

Ja, es ist möglich. Angenommen, Sie haben einen Inhaltstyp mit einer Feldsammlung mit dem Namen field_collection_parent, In der sich eine Feldsammlung mit dem Namen field_collection_child Enthält, in der sich ein Feld mit dem Namen field_child Befindet.

// First you need to wrap the node with entity_metadata_wrapper
$node_wrapper = entity_metadata_wrapper('node', $node);

// To get the value of field_child:
$value = $node_wrapper
           ->field_collection_parent
           ->field_collection_child
           ->field_child
           ->value();

// UPDATE: If a field accepts multiple values, treat it like an array
// The following line would get the first value of field_collection_child in the 
// first field_collection_parent.
$value = $node_wrapper
           ->field_collection_parent[0]
           ->field_collection_child[0]
           ->value();

// To set/modify the value of field_child
$node_wrapper
  ->field_collection_parent
  ->field_collection_child
  ->field_child
  ->set('Some new value');

// To save the node after modifying
$node_wrapper->save();
16
Елин Й.