Что «Entity API» добавляет к Drupal API и почему модуль зависит от него?

12

Модуль Entity API расширяет API-интерфейс, определенный в Drupal. В каких случаях модуль должен использовать API, предоставленный этим модулем? Легче ли писать модули, реализующие новые сущности, если они зависят от модуля Entity API ?

Под «легче писать» я подразумеваю, что для модулей, использующих Entity API , потребуется меньше кода для написания по сравнению с модулем, который не использует Entity API .

Я прочитал страницу проекта, но до сих пор не до конца понимаю причину, по которой предпочитаю создавать модуль, который зависит от модуля Entity API , а не модуль, зависящий только от кода ядра Drupal. Я понимаю, что модуль, расширяющий правила и реализующий сущность, должен использовать модуль Entity API ; в первом случае причина также в том, что модуль Rules зависит от модуля Entity API .

киамлалуно
источник
1
Страница проекта, на которую вы ссылаетесь, содержит довольно конкретный обзор того, что делает модуль. У вас есть конкретные вопросы о том, почему модуль будет зависеть от него, кроме того, что он там выложен?
Джедстром
Если вы не используете модуль Entity API, вы в конечном итоге напишите модуль, подобный этому проекту песочницы . Обратите внимание, что в этом проекте песочницы нет тестов и только один участник, тогда как в Entity API их много.
Пол-м

Ответы:

15

Не полный, но вот некоторые преимущества, которые я знаю:

  • Ядро Drupal предоставляет только EntityController для загрузки сущностей. Для сохранения, обновления и удаления вам нужно либо написать его самостоятельно, либо использовать Entity API.
  • Вы можете раскрыть базовые свойства ваших сущностей с помощью hook_entity_property_info (), см. Пример для privatemsg_entity_property_info () . Преимущество этого в том, что rules.module знает свойства вашей сущности, а вы читаете и пишете их с правилами. И вы также получаете интеграцию токенов бесплатно.
  • Он также может автоматически предоставить вам административный интерфейс для ваших лиц
Berdir
источник
Что вы имеете в виду под пользовательским интерфейсом администратора? Часть этого обрабатывается ядром.
googletorp
2
Core предоставляет пользовательский интерфейс для настройки полей и присоединения их к сущностям, API-интерфейс сущностей предоставляет пользовательский интерфейс для создания и управления сущностями для пользовательских сущностей, ядро ​​ничего подобного не делает.
Бердир
1
не забывать о замечательном metadata_wrapper drupalcontrib.org/api/drupal/…, который позволяет вам легко получить доступ к значениям поля в коде
mojzis
7

Автоматическая интеграция представлений, интерфейс администратора, экспортируемые объекты (все это необязательно). Плюс много синтаксических сахарных вещей, которые не попали в D7, и они вам нужны (generic entity_save (), entity_create (), перевод вашей пользовательской логики в «классы сущностей» ...)

Кроме того, модули (efq_views, rules) действительно хорошо работают со свойствами.

Боян Живанович
источник
-1

я верю, что API-интерфейс сущности (модуль) был в основном удален из ядра drupal 7 перед выпуском, потому что он был сочтен неполным. Только базовые функции CRI API-интерфейса сущности оставлены в ядре drupal для его выпуска GM.

skaught
источник