web-dev-qa-db-fra.com

Comment puis-je obtenir le type de contenu d'une entité de noeud à partir de l'objet $ entity?

J'utilise hook_ENTITY_TYPE_presave () pour modifier les valeurs des nœuds lors de l'enregistrement, mais je ne veux le faire que pour un type de contenu spécifique.

Comment vérifier le type de contenu de l'objet $ entity? J'ai regardé la documentation pour nœud de classe et en travaillant avec l'API d'entité , mais tout ce que j'ai trouvé était comment obtenir le type d'entité, pas le type de contenu.

Étant donné un nœud $entity objet, comment puis-je vérifier le type de contenu?

5
Patrick Kenny

Si vous savez que vous avez un nœud, vous pouvez utiliser getType(). Si vous ne le savez pas, vous pouvez utiliser la méthode générique ->bundle(). Notez que le second retournera le type d'entité dans le cas d'un type d'entité qui n'a pas de bundles, comme les utilisateurs.

Encore une fois, ma référence standard à http://wizzlern.nl/sites/wizzlern.nl/files/artikel/drupal-content-entity-8.0.pdf , il contient les deux méthodes.

14
Berdir

Le type d'entité et le nom du bundle sont deux choses; généralement, vous voulez avoir les deux. Vous pourriez par exemple avoir une entité média du bundle "image". Les noms de bundle seuls peuvent ne pas être uniques, je pense que vous pouvez nommer un type de contenu "galerie" et également un type de paragraphe "galerie" sans obtenir une erreur de validation. Donc:

$entity->getEntityTypeId()

vous donne le type d'entité: nœud, utilisateur, paragraphe, média

$entity->bundle()

vous donne le nom du bundle si vous en avez un, peut être "galerie" comme décrit ci-dessus. Comme le souligne Berdir, getType () ne fonctionne que sur les nœuds, donc getEntityTypeId () serait un remplacement de celui qui fonctionne sur tous les types d'entités.

1
eigentor