Работа с сущностями с помощью Entity metadata wrappers

Модуль Entity API позволяет работать с сущностями с помощью своей абстракции под названием Entity metadata wrappers.

Для чего это нужно:

— унифицированный способ доступа к свойствам и полям
— ленивая загрузка дочерних сущностей (например автор материала)
— валидация значений при записи свойств
— простая проверка разрешений

Примеры:

// Создание враппера для ноды по её nid
$node_wrapper = entity_metadata_wrapper('node', $nid);
 
// Вторым параметром можно передать объект ноды
$node_wrapper = entity_metadata_wrapper('node', $node);
 
// Получить значение свойства
$nid = $node_wrapper->nid->value(); // или $node_wrapper->getIdentifier();
$title = $node_wrapper->title->value();
 
// Получить значение свойства, пропущенного через check_plain()
$title = $node_wrapper->title->value(array('sanitize' => TRUE));
 
// Получить значение поля
$field_value = $node_wrapper->field_name->value();
 
// Получить первое значение multiple-value поля
$field_value = $node_wrapper->field_name[0]->value();
 
// Получить значение составного поля
$teaser = $node_wrapper->body->summary->value();
$body = $node_wrapper->body->value->value();
 
// Получить первое значение составного multiple-value поля
$first_tag_name = $node_wrapper->field_tags[0]->name->value();
 
// Получить значение поля для определённого языка
$field_value = $node_wrapper->language('ru')->field_name->value();
 
// Обойти значения multiple-value поля
foreach ($node_wrapper->field_tags as $tag_wrapper) {
  $tid = $tag_wrapper->tid->value();
  $tag_name = $tag_wrapper->name->value();
}
 
// Получить значение свойства у связанной сущности
$author = $node_wrapper->author->name->value();
$author_email = $node_wrapper->author->mail->value();
$image_url = $node_wrapper->field_image->file->url->value();
$author_roles = $node_wrapper->author->roles->optionsList();
 
// Изменить свойство
$node_wrapper->title = 'New title'
$node_wrapper->save();
 
// Изменить свойство у связанной сущности
$node_wrapper->author->mail = 'newmail@gmail.com';
$node_wrapper->author->save();
 
// Получить список доступных свойств
$node_properties = $node_wrapper->getPropertyInfo();
$body_properties = $node_wrapper->body->getPropertyInfo();
 
// Получить список доступных свойств у определённого типа сущности
$node_properties = entity_get_property_info('node');

Стоит заметить, что эту штука активно используется в Drupal Commerce и Rules.

Написанное актуально для
Entity API 7.x-1.0-rc1
Теги:
работа с сущностями
Добавлено: 30 Июля 2018 07:40:28 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...