Как создать сущность в Drupal 8?

Приветствую. В Drupal 8 практически все построено на механизме Entity или Сущность. В данной статье я расскажу, как создать контентную сущность (Content Entity).

Что это такое? К примеру, единица информации drupal — нода (node), которая используется для создания страниц или таксономия (taxonomy) — все это контентные сущности. По сути это объекты специального класса ContentEntityBase. Для их хранения автоматически в базе данных будет создаваться таблица. У этой таблицы мы можем задавать нужные нам поля. К примеру, у ноды эти поля — заголовок title и body — содержание страницы. Мы можем задать свои поля.

Кроме того сущности могут поддерживать (хотя сейчас мы это опустим) ревизии — механизм отслеживания изменений и строки перевода на другие языки. Также каждому объекту сущности можно подключить поля Drupal, что еще больше расширяет возможности применения сущностей. Имеются специальные интерфейсы для добавления, получения, изменения и удаления объектов сущности (CRUD). Легко можно подключить визуальную админку для CRUD-операций, создать веб-службу для работы с такими операциями, гибко настроить права доступа пользователей для проведения этих операций.

Приступим. Ранее мы уже создали с вами модуль b83. Если вы его установили, вам нужно будет его выключить тут: [site url]/admin/modules/uninstall .

Теперь в директории модуля b83/src/Entity нужно создать файл Example.php :

В начале файла обязательно прописываем хендлеры. Далее обязательно прописываем аннотацию:

Здесь:

  • id — идентификатор сущности.
  • label — подпись или ярлык для сущности. В данном примере его не будет нигде видно.
  • base_table — имя таблицы, которая будет создана для хранения объектов.
  • enity_keys : id — номер строки, uuid — уникальный идентификатор объекта сущности. По сути — это первичный и уникальный ключи в таблице.

В методе baseFieldDefinitions(EntityTypeInterface $entity_type) мы объявляем необходимые нам поля объекта сущности.

Класс мы создали, поля сущности определили. Включаем модуль b83 тут: [site url]/admin/modules .

В итоге после установки модуля в базе данных будет создана пустая таблица со следующей структурой:

Все, теперь мы можем наполнять нашу сущность данными и получать к ним доступ проводя CRUD-операции при помощи интерфейсов Entity. Как это делать я описал в следующей статье. Если было интересно, ставьте звездочки, пишите комментарии. До скорого!

Щелкните ниже, чтобы поставить оценку!
Всего: 0 В среднем: 0

Написать комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *