Я работаю над документацией Entity API здесь: https://drupal.org/developing/api/entity .
Вопрос слишком велик, чтобы ответить на него подробно, и это зависит от того, нужен ли вам контент или конфигурационные объекты. Предполагая, что вы хотите, чтобы объекты содержимого (сохранялись в базе данных, могли быть доступны для полей / ревизии / ..., подробности в ссылке выше), вам нужно сделать что-то вроде этого, документация, связанная выше, в конечном итоге охватит каждый шаг, включая учебные пособия, прямо сейчас , он охватывает только первые шаги.
- Укажите класс сущности и добавьте необходимые аннотации, чтобы представить его как сущность.
- Предоставьте необходимые таблицы, вам не нужно много менять, если у вас уже есть схема 7.x, но вы хотите добавить столбец uuid и, возможно, langcode, если ваша сущность может иметь язык / быть переводимым. См. Пример узла, связанный в шаге: если вы хотите сделать некоторые базовые поля (свойства) переводимыми или ревизуемыми, вам в настоящее время необходимо предоставить необходимые таблицы самостоятельно.
- Укажите определения базового поля в методе baseFieldDefinitions (). , Обратите внимание, что способ работы будет меняться в https://drupal.org/node/2047229 (от массивов к классам).
- Реализуйте необходимые методы до / после сохранения / загрузки / удаления, если у вас есть собственная логика, которая должна произойти, например, перед сохранением объекта (например, обновление измененной временной метки).
- Реализуйте контроллер доступа, если у вас есть нетривиальная логика доступа, и переопределите методы checkAccess () и checkCreateAccess () или укажите admin_permission в аннотации, если у вас есть только одно разрешение, позволяющее полный доступ.
- Рекомендуется, хотя технически не требуется предоставлять интерфейс для вашего класса сущности (например, NodeInterface for Node), который включает в себя полезные (обычно get / set / isSomething ()) методы для ваших базовых полей, чтобы вы могли напечатать подсказку на интерфейсе и получить автозаполнение для этих методов.
В зависимости от того, что вам нужно, будут также дополнительные шаги, такие как определение необходимых форм, возможно, контроллера рендеринга и так далее, но это, вероятно, должны быть отдельные вопросы, если вам нужно больше информации.
Заметки:
- Конфигурационные сущности в основном похожи, за исключением того, что вам нужно использовать контроллер хранилища настроек ( https://drupal.org/node/2119905 сделает это проще), вам не нужно определять схемы таблиц (очевидно), но вы должны предоставить файл схемы конфигурации, см., например, файлы словаря таксономии или типы узлов.
- Сущностные объекты не имеют своих базовых полей, определенных как открытые или защищенные свойства, вместо этого они автоматически управляются в свойствах значений и полей. Получите доступ к ним либо через get () / set (), либо через соответствующие магические методы. ($ node-> title равен $ node-> get ('title')).
- Помощь по документации там будет очень приветствоваться. Я создал базовую схему для содержимого / структуры, которую я хотел бы иметь, поэтому просто создайте новую страницу и начните, например, меня также интересуют упрощенные учебники для объектов конфигурации, здесь уже есть одна, которую я перейдем к документации по объекту, когда будете готовы: https://drupal.org/node/1809494
- Ядро имеет довольно большое количество реализаций сущности контента, если вы хотите увидеть рабочие примеры: Node, User, Term, Comment, CustomBlock, ... как объясняется в статье, связанной с шагом 1, вы всегда можете найти типы сущностей, предоставленные модуль в пространстве имен сущностей.
- @fago только что выступил с презентацией об Entity API на DrupalCamp Vienna в эти выходные, рассказывая о многом из того, что я написал здесь и многое другое.