Como guardar un nodo usando Entity Metadata Wrapper

Submitted by admin on Wed, 09/25/2013 - 03:35

Creando un nodo y un término de taxonomía

<code>
$node = entity_create('node', array('type' => 'article'));
$article = entity_metadata_wrapper('node', $node);

$article->title->set('mi titulo');
$article->body->set(array('value' => 'aqui mi cuerpo de mensaje'));
$article->field_address->set('Pamplona Alta');

$term = new stdClass(); // Make a new term object
$term->name = 'joomla'; // New term name
$term->vid = 1; // Term's vocabulary ID
taxonomy_term_save($term);

$article->field_tags->set(array($term->tid));
$article->save();
</code>

Creando un nodo y asignando términos de taxonomía previamente creados

<code>
$node = entity_create('node', array('type' => 'article'));
$article = entity_metadata_wrapper('node', $node);

$article->title->set('mi titulo');
$article->body->set(array('value' => 'aqui mi cuerpo de mensaje'));
$article->field_address->set('Pamplona Alta');
$date = new DateTime(date('2013-09-24 00:00:00'));
$article->field_start_time->set($date->getTimestamp());

$term = new stdClass(); // Make a new term object
$term->name = 'joomla'; // New term name
$term->vid = 1; // Term's vocabulary ID
taxonomy_term_save($term);

// store tids saved previously
$article->field_tags->set(array(1, 3));
$article->save();

</code>

Una forma de almacenar campos tipo date es

<code>
$article = entity_metadata_wrapper('node', 8);
$article->field_start_time->set(strtotime('12/12/2011'));
$article->save();
</code>

ó

<code>
$article = entity_metadata_wrapper('node', 8);

$article->field_start_time->set('1360984695');

$article->save();
</code>

Para almacenar node references field

<code>
$node = entity_create('node', array('type' => 'article'));
$article = entity_metadata_wrapper('node', $node);

$article->title->set('phpx');
$article->body->set(array('value' => 'x'));
// 6 and 28 are nids from node reference
$article->field_pages->set(array(6, 28));

$article->save();

</code>

Nota.

Se usan arrays para guardar valores siempre y cuando en la configuración del campo a guardar se haya indicado valores múltiples (sean taxonomias o references)
Entonces, así se almacene solamente un valor, igual tiene que indicarse como array

<code>
$node->field_tags->set(array(13));
</code>

Pero si en la configuración del campo se indicó valor único entonces debería indicarse así

<code>
$node->field_tags->set(13);
</code>

<strong>Updates</strong>
<code>
$node = node_load(47);
$wrapper = entity_metadata_wrapper('node', $node);
dsm($wrapper->getPropertyInfo());
</code>

See more

http://www.ryanwright.me/cookbook/drupal7/entity/wrapper

Etiquetas