Entity Flashcards

1
Q

Что такое entity?

A

сущность

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Какие существуют глобальные типы entity? В чём их различия?

a. Config entity
b. Content entity

A

a. Config entity
Импортятся в yml файлы.
Поддерживает переводы, хранит данные по умолчанию для данного типа сущности.

b. Content entity
Состоит из настраиваемых и базовых полей, может иметь ревизии, поддерживает переводы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Какие content entity существуют в Друпале по умолчанию?

a. Что такое node, зачем она нужна и как пользоваться?
b. Что такое taxonomy, зачем она нужна и как пользоваться?
c. Что такое блоки, зачем они нужны и как ими пользоваться?
i. block и block_content - что это, в чём различия?

A
user
node
block
taxonomy
comment

block - плагины, создаются через код
block_content - контент, создается через админку

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое bundle (content type)? Как создать свой?

A

Подтип типа сущности, содержащий в себе дополнительный набор полей
Создать:
- через админку
- программно

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое field? Какие типы полей бывают?

a. Как добавить поле в entity type?

A
Field – поле содержащее дополнительную информацию, привязанную к конкретному экземпляру сущности
Типы
string
boolean
integer
decimal
language
timestamp
changed
datetime
uuid
email
entity_reference
map

hook_entity_base_field_info
hook_entity_bundle_field_info

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое field_base, field_instance?

A

feld_base – это базовое поле

field_instance – это экземпляр типа поля с отдельными настройками, привязанный к конкретному типу сущности

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое entity display? Зачем они нужны, как создать свой?

A

  • через админку (admin/structure/display-modes)
  • через yml файл
  • программно EntityViewMode::create()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое field format? Как создать свой форматтер?

A

Field format – это представление содержимого поля для конечного пользователя.
Форматттер представляет из себя плагин, имплементирующий FormatterBase

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Что такое entity form display? Зачем они нужны, как создать свой? Чем
отличаются от entity display?

A

Настройка отображения формы редактирования сущности.

  • через админку (admin/structure/display-modes)
  • через yml файл
  • программно EntityFormMode::create()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое field widget? Как создать свой?

A

Widget – это визуальный интерфейс ввода дынных в поле.

Widget представляет из себя плагин, имплементирующий WidgetBase

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Как создать реакцию на создание сущности? Изменение/удаление?

A

hook_entity_insert
hook_entity_update
hook_entity_delete

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как создать свой тип сущности? Когда это следует делать?

A

Создавать свой тип сущности нужно когода ни один из существующих не удовлетворяет ваши потребности.
ContentEntityBase

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Каким образом можно управлять доступом к сущности?

a. Permissions
i. Что такое роли и пермишены? Как создать свои?
b. Hook_entity_access

A

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

  • в админке через роли и пермишены
  • через hook_entity_access ($entity, $account)

Создать свои роли и пермишены

  • через админку
  • через yml файлы
  • через create у классов Permission и Role
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как изменить свойства типа сущности?

a. Как заменить класc?

A

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’);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Валидаторы, зачем нужны? Как добавить валидатор к типу сущности?

a. Из чего состоит?
b. Как создать свой?

A

Валидатор - защита от некорректного ввода данных.
Состоит:
Ограничение: класс, который хранит в себе настройки ограничений
Валидатор: непосредственно проверяет валидность данных(соответствие ограничениям)
Хук: прицепляет ограничение к типу сущности (hook_entity_type_alter)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly