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.
¶См. также
- 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 и как писать их в своем собственном коде.
Создание пользовательского типа объекта контента с помощью 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. Создайте термины таксономии
В этом примере книги классифицируются по жанру, поэтому нам понадобится словарь под названием «Жанр книги».
- Нажмите Структура > Таксономия > Добавить словарь.
- Дайте словарю имя собственное и описание.
- Нажмите Сохранить.
- На вкладке Список щелкните Добавить термин.
Добавьте следующие термины:
- Приключения
- Поваренная книга
- Драма
- Фэнтези
- Ужасы
Шаг №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. Создайте рецензии на книгу
Теперь наш сайт почти готово к использованию. Давайте создадим обзор книги и посмотрим, все ли работает правильно.