Drupal 9: Entity

Сущность (англ. Entity) — это легковесный доменный объект, который имеет хранилище данных. Один PHP объект сущности представляет конкретную единицу данных. В качестве хранилища данных может использоваться как БД, так и файлы, а разработчики могут описывать новые типы хранилищ и источники данных.

У сущностей, как правило, есть свои репозитории (англ. repository). Репозиторий — это постоянный функционал, который позволяет управлять сущностями конкретного типа. Он позволяет загружать, сохранять, удалять и искать сущности в их непосредственном хранилище.

¶Сущности в Drupal

Сущности в Drupal используются для хранения данных. В качестве примера можно привести следующие сущности:

  • node (Node) — также известна как «Тип материала». Предоставляется одноимённым модулем node. Это основная сущность в Drupal, которая, в установочных профилях отличных от минимального, включена по умолчанию. Она используется для создания содержимого на сайте: Страницы, Публикации, Новости, Отзывы и т.
    д. Это основная сущность для хранения и работы с содержимым из коробки.
  • user (User) — сущность «Пользователь» предоставляет хранилище данных для пользователей сайта. Как правило хранит, имя пользователя, логин, пароль, email и т.д.
  • file (File) — сущность «File», это пример очень минимальной и легковесной сущности. Данная сущность хранит информацию о физических файлах загруженных в Drupal, и используется для обращения и работы с ними. По умолчанию, для данной сущности не предоставляется никакого интерфейса.

А также множество других сущностей с различными назначениями и возможностями.

¶Типы сущностей в Drupal

Сущности в Drupal базируются на Plugin API. Их можно разделить на два основных подтипа:

  • Контент сущность (ContentEntityType): Сущности, которые хранят свои данные в базе данных. Отлично подходят для хранения больших объёмов данных. Каждая сущность имеет свою выделенную таблицу.
  • Конфигурационная сущность (ConfigEntityType): Конфигурационные сущности используются для хранения небольшого объема данных. Они хранятся в YAML файлах и больше известны как «конфиги». Конфигурационные сущности можно деплоить, синхронизировать и они отслеживаются в системе контроля версий.

Это лишь две основные и готовые абстрактные реализации поставляемые ядром. Они должны покрывать 99% потребностей. Для оставшегося 1% и очень нетипичных кейсов, существует более низкоуровневая абстракция, которую и расширяют описанные два — EntityType.

Вы можете описать совершенно новый подтип сущности, унаследовавшись от EntityType. В таком случае, вам придётся полностью брать всё под свой контроль. В данном случае Drupal не выдвигает фактически никаких требований, и вы вольны делать что угодно. Где будут храниться данные — решать вам. Это отличная точка старта, если вы хотите что-то очень уникальное не вписывающееся в предоставленные готовые абстракции, и\или вы хотите хранить данные не в БД\YAML.

Например, такие сущности могут выступать в качестве прокси для API.

¶См. также

  • Plugin API — сущности, это пример очень гибкой реализации плагинов.

¶Ссылки

  • Основы: Сущности контента и Поля, drupal.org.
  • Сущности Drupal 8, Синица Сергей, drupal-coder.ru.

объектов | Drupalize.Me

« Все темы Drupal

Последнее обновление: 16 мая 2023 г.

Категории

Создание сайта, разработка модулей

Версия Drupal

Drupal 10, Drupal 9, Drupal 8, Drupal 7

Почти каждый основной компонент, из которого состоит сайт Drupal, является сущностью того или иного типа, т.е. пользователи, узлы и блоки — это все типы сущностей. Затем все объекты можно настроить, добавив к ним поля. Понимание того, как работает система Entity Drupal, имеет основополагающее значение для понимания сходств и различий между основными компонентами, составляющими сайт Drupal. Вы можете изменить существующие типы сущностей, чтобы они работали более эффективно на вашем сайте, а также можно создать свои собственные типы сущностей, чтобы инкапсулировать поведение определенных структур данных в вашем приложении.

Из обзора: Отношения в представлениях:

В Drupal сущность — это общее понятие, представляющее существительное (человек, место или вещь). По умолчанию в Drupal существует несколько различных типов сущностей, каждая из которых предназначена для представления определенного типа данных.

Одним из типов объектов является пользователь. Сущность пользователя содержит информацию, относящуюся к людям, которые посещают наш сайт, например адрес электронной почты и пароль пользователя. В рамках концепции, согласно которой сущности представляют существительные, пользовательская сущность — это человек.

Другим типом объекта в Drupal является контент (иногда называемый узлом). Сущности контента содержат данные, которые относятся к чему-то, что, как ожидается, будет посещено и использовано, например URL-адрес, заголовок и тело. Продолжая концепцию о том, что объекты представляют существительные, объект контента — это место. У него есть URL-адрес, его можно посетить, и он содержит контент, предназначенный для использования посетителем.

Кроме того, у каждого объекта контента в Drupal есть владелец. Владелец (часто называемый автором) определенного фрагмента контента является пользователем. Чаще всего владельцем некоторого контента является пользователь, создавший контент. Продолжая нашу аналогию с пользователем, представляющим человека, и контентом, представляющим место, имеет смысл, что человек будет владеть местом. Эта концепция пользовательского объекта, владеющего объектом контента, является отношением. И эта взаимосвязь реализуется на нашем сайте за счет использования полей ссылок на объекты.

Обзор: отношения в представлениях
Бесплатно

Категории

Создание сайта

Друпал 8, 9 и 10

Больше информации

Чтобы отображать значения для ссылочных объектов в представлениях, необходимо добавить связь. Что такое отношения, как они работают и что значит требовать этих отношений? Каковы некоторые распространенные варианты использования для добавления отношения к представлению? К концу этого урока вы должны уметь:

  • Объясните некоторые распространенные варианты использования для добавления отношения к представлению.
  • Понимание концепции ссылок на объекты и того, как значения этих полей могут отображаться в представлении.

Примеры задач

  • Понять, какие компоненты сайта Drupal являются сущностями
  • Понимание разницы между объектами конфигурации и содержимого
  • Знайте, когда и как создавать пользовательские сущности

Уверенность

Entity API — это стабильный базовый API.

Ресурсы Drupalize.Me

2.3. Концепция: сущности и поля содержимого
Бесплатно

Категории

Создание сайта, администрирование сайта

Друпал 8, 9 и 10

Больше информации

Обзор объектов и полей содержимого.

Entity API Drupal
Курс

Категории

Разработка модуля

Друпал 8, 9 и 10

11 уроков

Учебные пособия в этом курсе

Обзор Entity API Бесплатный

Основы реализации Entity API

Создать объект пользовательского контента

Формирование пользовательского типа контента с помощью Drush Generators

Работа с Entity CRUD

Поиск данных с помощью EntityQuery

Перехватчики Entity API

Изменить существующие сущности с помощью хуков Alter

API проверки объектов

Управление доступом к сущностям

API типизированных данных

Аннотации

Категории

Разработка модулей

Друпал 8, 9 и 10

Больше информации

Аннотации — это специально отформатированные комментарии к блоку документов PHP, которые используются для обнаружения классов и описания метаданных.

Хотя технически возможно использовать аннотации для других целей, на данный момент Drupal использует их только для системы плагинов.

В этом уроке мы рассмотрим:

  • Что такое аннотации
  • Вариант использования аннотаций
  • Как понять, что можно поместить в аннотацию

К концу этого руководства вы должны понимать, как аннотации используются в Drupal и как писать их в своем собственном коде.

Создание пользовательского типа объекта контента с помощью Drush Generators

Категории

Разработка модулей, серверная часть и инфраструктура

Друпал 8, 9 и 10

Больше информации

Генераторы кода — это отличный инструмент для повышения производительности, который позволяет создавать шаблоны для общих задач разработки в Drupal. Одним из наиболее распространенных вариантов использования генераторов является создание шаблонов кода, необходимого для пользовательского типа сущности. Для правильной работы пользовательских объектов требуется много файлов и сложных аннотаций. Существует много шаблонного кода, который более или менее одинаков для всех типов сущностей. Создание всех файлов повторяется, занимает много времени и подвержено человеческим ошибкам. Генераторы могут помочь автоматизировать эту задачу и ускорить создание собственных типов сущностей.

В этом уроке мы:

  • Узнайте, как сгенерировать код для пользовательского объекта с помощью Drush
  • Узнайте о параметрах, которые генераторы предоставляют для пользовательских сущностей

К концу этого руководства вы должны знать, как создавать пользовательские объекты с помощью Drush.

Сущности и поля тесно связаны между собой, и границы между ними часто путают. Как правило, полезно изучить оба, чтобы правильно использовать любой из них.

Поля и API полей
Тема

Категории

Создание сайта, тематика, разработка модулей, администрирование сайта

Друпал 7, 8, 9 и 10

Больше информации

Поля — это строительные блоки мощной системы моделирования содержимого Drupal. Field API позволяет разрабатывать настраиваемые типы полей, удовлетворяющие практически любым потребностям в отображении и сборе данных.

Друпал 7

Работа с сущностями в Drupal 7
Курс

Категории

Разработка модулей

Друпал 7

16 уроков

Учебные пособия в этом курсе

Введение в работу с сущностями в Drupal 7 Series Бесплатно

Что такое сущности Drupal? Бесплатно

Работа с существующими объектами Drupal

Создание списков объектов с запросом поля объекта

Вариант использования нашего пользовательского объекта Drupal

Создание простого пользовательского объекта

Введение в классы сущностей

Обеспечить пользовательский интерфейс администратора для вашей организации

Переопределить контроллер сущностей для лучшего рендеринга и сохранения

Сделайте свою сущность доступной для использования с помощью наборов

Режимы просмотра объекта

Откройте вашу сущность для просмотров

Настройка пользовательского интерфейса объекта путем переопределения контроллера пользовательского интерфейса

Улучшенная информация о свойствах объектов

Использование оболочек метаданных объектов

Ревизии сущности

Внешние ресурсы

  • Entity API (руководство) (Drupal. org)

    • Руководство по документации Drupal Entity API на Drupal.org.
  • Обзор раздела Entity API (api.drupal.org)

    • Техническая документация по Entity API. Полезно, когда вы уже понимаете концепцию сущностей, но не знаете, как реализовать функцию или выполнить конкретную задачу.
  • Пример для разработчиков (Drupal.org)

    • Проект примеров содержит примеры модулей с кодом, демонстрирующим создание объектов содержимого и конфигурации.
Было ли это полезно? Любые дополнительные отзывы?

Разрешить пользователям выбирать объекты Drupal с помощью модуля обозревателя объектов

В этом сообщении блога я покажу вам, как разрешить пользователям Drupal выбирать объекты с помощью модуля «Обозреватель объектов».

Это руководство было запрошено клиентом OSTraining, который создает сайт обзоров книг. Клиент хотел использовать Entity Browser, чтобы создать эту функцию:

  • На сайте есть два типа контента: книги и обзоры книг.
  • Когда пользователи создают новый обзор книги, они могут использовать представление для поиска и выбора книги, которую они рецензируют. Например, если они просматривают «Войну и мир», они могут искать существующий узел «Война и мир».
  • Когда рецензия на книгу будет опубликована, выбранный узел будет встроен в рецензию на книгу.

Этот запрос клиента может быть выполнен с помощью модуля Entity Browser. Этот модуль предоставляет браузер, который пользователи Drupal могут использовать для встраивания узлов в другие части своего сайта.

В этом учебном пособии вы проведете упражнение по созданию сайта и покажете, как использовать модуль Entity Browser.


Шаг №1. Установите необходимые модули

Чтобы использовать Entity Browser, вам необходимо установить следующие модули: Entity Browser и Chaos Tools.

Используйте предпочитаемый метод для загрузки и установки этих модулей. Я использую Composer:

 composer install drupal/entity_browser 
 composer install drupal/ctools 

Это поместит модули в вашу установку Drupal. После этого нажмите Расширить , найдите оба модуля, включите их и нажмите Установить .


Шаг №2. Создайте термины таксономии

В этом примере книги классифицируются по жанру, поэтому нам понадобится словарь под названием «Жанр книги».

  • Нажмите Структура > Таксономия > Добавить словарь.
  • Дайте словарю имя собственное и описание.
  • Нажмите Сохранить.
  • На вкладке Список щелкните Добавить термин.

Добавьте следующие термины:

  • Приключения
  • Поваренная книга
  • Драма
  • Фэнтези
  • Ужасы
9027 4

Шаг №3. Создайте тип контента Книга

Далее мы создадим тип контента для наших книг. Мы будем использовать таксономию жанра книги, созданную на предыдущем шаге.

  • Нажмите Структура > Типы контента > Добавить тип контента.
  • Создайте тип контента с именем Book и добавьте следующие поля с настройками по умолчанию:
  • Щелкните Добавить поле еще раз.
  • В раскрывающемся списке под Ссылка выберите Термин таксономии и присвойте ему соответствующую метку.
  • Нажмите Сохранить и продолжить.
  • Оставьте Допустимое количество значений равным 1 и нажмите Сохранить настройки поля
  • Прокрутите вниз до нижней части экрана редактирования и выберите словарь, на который вы хотите ссылаться в своем типе контента. В этом случае: Жанр книги
  • Щелкните Сохранить настройки
  • Щелкните вкладку Управление отображением формы .
  • Ищите Книжный жанр и измените его виджет на Флажки / переключатели.
  • Щелкните Сохранить.

Шаг №4. Создайте

Книгу Содержание

Теперь пришло время создать от 5 до 10 книг и отнести каждую из них к определенному жанру.

  • Щелкните Содержимое > Добавить содержимое > Книга.

Шаг № 5.

Создание представления

После создания образца содержимого вы готовы к созданию представления. Это представление будет отображаться в обозревателе сущностей, чтобы вы могли выбрать книгу во время создания рецензии на книгу.

  • Нажмите Структура > Представления > Добавить представление.
  • Создайте представление с заголовком Доступные книги.
  • Показать содержимое типа Книга.
  • Не устанавливайте галочки в настройках страницы и блока.
  • Нажмите Сохранить и изменить.
  • Нажмите кнопку Добавить в разделе ДИСПЛЕИ .
  • Выберите Entity Browser.
  • Нажмите Изменить порядок помимо критериев SORT и удалить Содержание: создано по критерию по описанию.
  • Нажмите «Применить».
  • Щелкните ДОБАВИТЬ рядом с критериями ФИЛЬТР и выберите поле Жанр книги .
  • Нажмите Добавить и настроить критерии фильтра.
  • Убедитесь, что выбран Словарь жанров книг .
  • Измените тип выбора на раскрывающийся список .
  • Нажмите Применить и продолжить.
  • Проверить Показать этот фильтр посетителям, чтобы они могли его изменить.
  • Убедитесь, что оператор выбран как Является одним из.
  • Щелкните Применить.
  • Добавьте поле Title к критерию SORT .
  • Оставьте конфигурацию по умолчанию Отсортируйте по возрастанию и нажмите Применить.

Книги будут представлены в представлении в алфавитном порядке. Вам нужно вставить еще несколько полей, которые будут отображаться в представлении. На данный момент доступно только название узла.

  • Нажмите кнопку Добавить в разделе Поля .
  • Найдите поле обложки книги и нажмите Добавить и настроить поля.
  • Выберите Стиль изображения (Миниатюра 100×100) и нажмите Применить.
  • Нажмите «Добавить» еще раз, чтобы добавить Массовый выбор поля браузера сущностей формы .
  • Нажмите Добавить и настроить поля.
  • Щелкните Применить.

Использование этого поля является обязательным, если вы хотите использовать Entity Browser, поэтому обратите на это особое внимание.

  • Измените формат представления, например, на Сетка.
  • Щелкните Примените дважды.

Конфигурация представления в пользовательском интерфейсе представлений должна выглядеть так, как показано на рисунке ниже. Нажмите Сохранить , чтобы сохранить вид.


Шаг № 6. Настройка модуля Entity Browser

На этом этапе мы выберем настройку ключевого модуля в этом руководстве: Entity Browser.

  • Нажмите Конфигурация > Браузеры объектов
  • Нажмите Добавить браузер объектов.
  • Присвойте ему соответствующую метку, например, Браузер книг.
  • В качестве плагина отображения выберите iFrame.
  • Нажмите Далее.
  • Отметьте Auto open Entity browser и нажмите Next.
  • Нажмите Next еще два раза, пока не попадете на страницу конфигурации Widgets .
  • Нажмите раскрывающийся список, чтобы выбрать плагин виджета View .
  • Изменить метку виджета, например: «Выберите книгу».
  • Выберите вид, который вы настроили на шаге №5.
  • Нажмите Готово.

Шаг № 7. Создайте тип содержимого «Рецензия на книгу»

Наш сайт почти готов. Прежде чем мы закончим, нам нужно создать тип контента, который смогут использовать рецензенты книг:

  • Нажмите Структура > Типы контента > Добавить тип контента.
  • Назовите этот тип контента Обзор книги.
  • Добавьте новое поле, в разделе Reference выберите Content.
  • Дайте этому полю соответствующую метку, например, Книга.
  • Нажмите Сохранить и продолжить.
  • В параметре Тип элемента для ссылки выберите Содержание.
  • Нажмите Сохранить настройки поля.
  • Нажмите Сохранить настройки.
  • Щелкните вкладку Управление отображением формы для этого типа контента.
  • Найдите поле ссылки и измените его виджет на браузер сущностей.
  • Нажмите на шестеренку справа и выберите Браузер книг (или как вы назвали браузер, который вы только что создали на шаге 6.
  • Нажмите Обновить.
  • Нажмите Сохранить. или Полностью визуализированный объект . Вы можете использовать режимы просмотра (например, Тизер), чтобы представить объект в этом новом типе контента Обзор книги .


    Шаг 8. Создайте рецензии на книгу

    Теперь наш сайт почти готово к использованию. Давайте создадим обзор книги и посмотрим, все ли работает правильно.