Qu'est-ce que «Entity API» ajoute à l'API Drupal, et pourquoi un module en dépendrait-il?

12

Le module API d'entité étend l'API d'entité définie dans Drupal. Dans quels cas un module doit-il utiliser l'API fournie par ce module? Les modules qui implémentent de nouvelles entités sont-ils plus faciles à écrire s'ils dépendent du module API d'entité ?

Par "plus facile à écrire", je veux dire que les modules utilisant l' API d'entité nécessiteraient moins de code à écrire par rapport à un module qui n'utilise pas l' API d'entité .

J'ai lu la page du projet, mais je ne comprends toujours pas complètement la raison de préférer créer un module qui dépend du module API d'entité , plutôt qu'un module dépendant uniquement du code core Drupal. Je comprends qu'un module étendant des règles et mettant en œuvre une entité doit utiliser le module API d'entité ; dans le premier cas, la raison est également que le module Rules dépend du module API Entity .

kiamlaluno
la source
1
La page de projet que vous avez liée fournit un aperçu assez précis de ce que fait le module. Avez-vous des questions spécifiques sur la raison pour laquelle un module en dépendrait autre que ce qu'il contient?
jhedstrom
Si vous n'utilisez pas le module API d'entité, vous finissez par écrire un module comme ce projet sandbox . Notez que ce projet sandbox n'a pas de tests et un seul contributeur, alors que l'API Entity en possède plusieurs.
paul-m

Réponses:

15

Pas complet, mais voici quelques avantages que je connais:

  • Drupal core fournit uniquement un EntityController pour le chargement des entités. Pour enregistrer, mettre à jour et supprimer, vous devez soit l'écrire vous-même, soit utiliser l'API Entity.
  • Vous pouvez exposer les propriétés de base de vos entités avec hook_entity_property_info (), voir privatemsg_entity_property_info () pour un exemple. L'avantage de ceci est que rules.module connaît vos propriétés d'entité et que vous les lisez et les écrivez avec des règles. Et vous bénéficiez également d'une intégration de jetons gratuite.
  • Il peut également vous fournir automatiquement une interface d'administration pour vos entités
Berdir
la source
Qu'entendez-vous par une interface utilisateur d'administration? Une partie de cela est gérée par le noyau.
googletorp
2
Core fournit une interface utilisateur pour configurer des champs et les attacher à des entités, l'API d'entité fournit une interface utilisateur pour créer et gérer des entités pour des entités personnalisées, Core ne fait rien de tel.
Berdir
1
sans oublier le super metadata_wrapper drupalcontrib.org/api/drupal/… qui vous permet d'accéder facilement aux valeurs du champ en code
mojzis
7

Intégration des vues automatiques, interface utilisateur d'administration, entités exportables (tout cela est facultatif). De plus beaucoup de choses syntaxiques qui ne sont pas entrées dans D7 et vous en avez besoin (entity_save () générique, entity_create (), en mettant votre logique personnalisée dans des "classes d'entités" ...)

De plus, les modules (efq_views, règles) font vraiment du bien avec les propriétés.

Bojan Zivanovic
la source
-1

Je pense que l'entité api (module) a été fondamentalement supprimée du noyau drupal 7 avant la sortie car elle était considérée comme incomplète.

skaught
la source