Свои типы Entity:зачем и как
использовать
Entity
Entity Type
Bundle 1
Bundle 2
Bundle 3
Field 1
Field 2
Field 3
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;}
Drupal core● Node● Comment● User● Taxonomy Term● Taxonomy Vocabulary● File
Contrib Modules● Drupal Commerce● Rules● Profile 2● Message● Field Collection
...
Форма для заполнения
Имя
О себе
Послать
Обработка данных
Результат
Требования
● Гибкость● Расширяемость● Несколько форм: разные поля,
схожий функционал● Сжатые сроки
Entity + Bundles + Fields
Почему не ноды?● Не нужны некоторые
свойства● Нужны
дополнительные свойства
● не нужен некоторый функционал / хуки
● нужен свой функционал
● Не нужны комментарии
● Не нужны ревизии● Не нужна система
доступов (node_access())
● нужна своя система доступов
● не нужна страница /node/[nid]
Entity API
https://drupal.org/project/entity
Views, Rules
Экспорт / Features
Token (Entity Tokens)
Admin UI
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();
Entity без полей
● Views● Rules● Token● Admin UI● entity_metadata_wrapper()
также смотрите● Drupal Commerce● Profile 2● Entityforms● Entity Construction Kit (ECK)
Спасибо за внимание !
Top Related