19
Свои типы Entity: зачем и как использовать

Entity. Anton Shubkin and Yaroslav Ponomarev

Embed Size (px)

Citation preview

Page 1: Entity. Anton Shubkin and Yaroslav Ponomarev

Свои типы Entity:зачем и как

использовать

Page 2: Entity. Anton Shubkin and Yaroslav Ponomarev

Entity

Entity Type

Bundle 1

Bundle 2

Bundle 3

Field 1

Field 2

Field 3

Page 3: Entity. Anton Shubkin and Yaroslav Ponomarev

function node_entity_info() { $return = array( 'node' => array( 'label' => t('Node'), 'controller class' => 'NodeController', 'base table' => 'node', 'revision table' => 'node_revision', 'fieldable' => TRUE, 'entity keys' => array( 'id' => 'nid', 'revision' => 'vid', 'bundle' => 'type', 'label' => 'title', 'language' => 'language', ),

hook_entity_info() 'bundle keys' => array( 'bundle' => 'type', ), 'bundles' => array(), //... ), ); // … foreach (node_type_get_names() as $type => $name) { $return['node']['bundles'][$type] = array( // ... ); } return $return;}

Page 4: Entity. Anton Shubkin and Yaroslav Ponomarev

Drupal core● Node● Comment● User● Taxonomy Term● Taxonomy Vocabulary● File

Page 6: Entity. Anton Shubkin and Yaroslav Ponomarev

Форма для заполнения

Имя

Email

О себе

Послать

Page 7: Entity. Anton Shubkin and Yaroslav Ponomarev

Обработка данных

Page 8: Entity. Anton Shubkin and Yaroslav Ponomarev

Результат

Page 9: Entity. Anton Shubkin and Yaroslav Ponomarev

Требования

● Гибкость● Расширяемость● Несколько форм: разные поля,

схожий функционал● Сжатые сроки

Entity + Bundles + Fields

Page 10: Entity. Anton Shubkin and Yaroslav Ponomarev

Почему не ноды?● Не нужны некоторые

свойства● Нужны

дополнительные свойства

● не нужен некоторый функционал / хуки

● нужен свой функционал

● Не нужны комментарии

● Не нужны ревизии● Не нужна система

доступов (node_access())

● нужна своя система доступов

● не нужна страница /node/[nid]

Page 11: Entity. Anton Shubkin and Yaroslav Ponomarev

Entity API

https://drupal.org/project/entity

Page 12: Entity. Anton Shubkin and Yaroslav Ponomarev

Views, Rules

Page 13: Entity. Anton Shubkin and Yaroslav Ponomarev

Экспорт / Features

Page 14: Entity. Anton Shubkin and Yaroslav Ponomarev

Token (Entity Tokens)

Page 15: Entity. Anton Shubkin and Yaroslav Ponomarev

Admin UI

Page 16: Entity. Anton Shubkin and Yaroslav Ponomarev

entity_metadata_wrapper()$node = node_load(1);$wrapper = entity_metadata_wrapper('node', $node); $wrapper->title->value();$wrapper->author->name->value();$wrapper->field_multiple->value();foreach ($wrapper->field_multiple as $delta => $field_wrapper) { $field_wrapper->value();}$wrapper->field_price->value();$wrapper->field_price->amount_decimal->value() $wrapper->title->set('another title');$wrapper->body->value->set('Lorem Ipsum');$wrapper->save();

Page 17: Entity. Anton Shubkin and Yaroslav Ponomarev

Entity без полей

● Views● Rules● Token● Admin UI● entity_metadata_wrapper()

Page 19: Entity. Anton Shubkin and Yaroslav Ponomarev

Спасибо за внимание !