Entity Flashcards
Что такое entity?
сущность
Какие существуют глобальные типы entity? В чём их различия?
a. Config entity
b. Content entity
a. Config entity
Импортятся в yml файлы.
Поддерживает переводы, хранит данные по умолчанию для данного типа сущности.
b. Content entity
Состоит из настраиваемых и базовых полей, может иметь ревизии, поддерживает переводы.
Какие content entity существуют в Друпале по умолчанию?
a. Что такое node, зачем она нужна и как пользоваться?
b. Что такое taxonomy, зачем она нужна и как пользоваться?
c. Что такое блоки, зачем они нужны и как ими пользоваться?
i. block и block_content - что это, в чём различия?
user node block taxonomy comment
block - плагины, создаются через код
block_content - контент, создается через админку
Что такое bundle (content type)? Как создать свой?
Подтип типа сущности, содержащий в себе дополнительный набор полей
Создать:
- через админку
- программно
Что такое field? Какие типы полей бывают?
a. Как добавить поле в entity type?
Field – поле содержащее дополнительную информацию, привязанную к конкретному экземпляру сущности Типы string boolean integer decimal language timestamp changed datetime uuid email entity_reference map
hook_entity_base_field_info
hook_entity_bundle_field_info
Что такое field_base, field_instance?
feld_base – это базовое поле
field_instance – это экземпляр типа поля с отдельными настройками, привязанный к конкретному типу сущности
Что такое entity display? Зачем они нужны, как создать свой?
…
- через админку (admin/structure/display-modes)
- через yml файл
- программно EntityViewMode::create()
Что такое field format? Как создать свой форматтер?
Field format – это представление содержимого поля для конечного пользователя.
Форматттер представляет из себя плагин, имплементирующий FormatterBase
Что такое entity form display? Зачем они нужны, как создать свой? Чем
отличаются от entity display?
Настройка отображения формы редактирования сущности.
- через админку (admin/structure/display-modes)
- через yml файл
- программно EntityFormMode::create()
Что такое field widget? Как создать свой?
Widget – это визуальный интерфейс ввода дынных в поле.
Widget представляет из себя плагин, имплементирующий WidgetBase
Как создать реакцию на создание сущности? Изменение/удаление?
hook_entity_insert
hook_entity_update
hook_entity_delete
Как создать свой тип сущности? Когда это следует делать?
Создавать свой тип сущности нужно когода ни один из существующих не удовлетворяет ваши потребности.
ContentEntityBase
Каким образом можно управлять доступом к сущности?
a. Permissions
i. Что такое роли и пермишены? Как создать свои?
b. Hook_entity_access
Управление доступом
- в админке через роли и пермишены
- через hook_entity_access ($entity, $account)
Создать свои роли и пермишены
- через админку
- через yml файлы
- через create у классов Permission и Role
Как изменить свойства типа сущности?
a. Как заменить класc?
hook_entity_type_alter () {
$entity_types[‘user’]->setHandlerClass(‘access’, CustomAccessHandler::class);
}
+ написать класс хандлера
Как заменить класс?
my_module_entity_type_build () {
$entity_types[‘node’]->setClass(‘Drupal\my_module\Entity\MyNode’);
}
Валидаторы, зачем нужны? Как добавить валидатор к типу сущности?
a. Из чего состоит?
b. Как создать свой?
Валидатор - защита от некорректного ввода данных.
Состоит:
Ограничение: класс, который хранит в себе настройки ограничений
Валидатор: непосредственно проверяет валидность данных(соответствие ограничениям)
Хук: прицепляет ограничение к типу сущности (hook_entity_type_alter)