web-dev-qa-db-ja.com

$ entityオブジェクトからノードエンティティのコンテンツタイプを取得するにはどうすればよいですか?

保存時にノードの値を変更するために hook_ENTITY_TYPE_presave() を使用していますが、これは特定のコンテンツタイプに対してのみ行いたいです。

$ entityオブジェクトのコンテンツタイプを確認するにはどうすればよいですか? クラスノードエンティティAPIの操作 のドキュメントを調べましたが、コンテンツタイプではなくエンティティタイプを取得する方法しか見つかりませんでした。

与えられたノード$entityオブジェクト、コンテンツタイプを確認するにはどうすればよいですか?

5
Patrick Kenny

ノードがあることがわかっている場合は、getType()を使用できます。それがわからない場合は、ジェネリックメソッド->bundle()を使用できます。ユーザーのようにバンドルを持たないエンティティタイプの場合、2番目はエンティティタイプを返すことに注意してください。

繰り返しますが、 http://wizzlern.nl/sites/wizzlern.nl/files/artikel/drupal-content-entity-8.0.pdf への私の標準的な参照には、両方のメソッドが含まれています。

14
Berdir

エンティティタイプとバンドル名は2つあります。通常は両方が必要です。たとえば、バンドル「イメージ」のメディアエンティティがあります。バンドル名だけでは一意ではない可能性があります。検証エラーが発生することなく、コンテンツタイプに「ギャラリー」と段落タイプに「ギャラリー」と名前を付けることができると思います。そう:

$entity->getEntityTypeId()

エンティティタイプを提供します:ノード、ユーザー、段落、メディア

$entity->bundle()

バンドル名がある場合は、バンドル名を指定します。上記のように「ギャラリー」にすることができます。 Berdirが指摘しているように、getType()はノードでのみ機能するため、getEntityTypeId()はすべてのエンティティタイプで機能するものの代わりになります。

1
eigentor