Работа с сущностями с помощью 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
Комментарии:
Нету комментариев для вывода...