エンティティで使用されるフィールドのリストを取得するにはどうすればよいですか?


7

エンティティが使用しているすべてのフィールドを取得したい(ロックされたフィールドを含む)。

エンティティで使用されているフィールドのリストを取得するにはどうすればよいですか?

admin / reports / fieldsのように。

ここに画像の説明を入力してください


これをプログラムで実行しますか、それとも、UIを通じてサイトのフィールドの使用を確認しますか?
2016

私は、このプログラムによって..たい
アジャイ・レディ

回答:


8

EntityFieldManager :: getFieldMapをお勧めします。EntityManagerは、他のクラスの機能を提供するためのサービスにすぎません。

ドキュメントから:

戻り値

arrayエンティティタイプをキーとする配列。各値は配列であり、キーはフィールド名であり、値は2つのエントリを持つ配列です。

  • type:フィールドのタイプ。
  • bundles:フィールドが表示されるバンドルの連想配列。キーと値はどちらもバンドルのマシン名です。

5

EntityFieldManagerInterface::getFieldMap() エンティティタイプ>フィールド名でキー配列を作成し、フィールドタイプとそれに関連するバンドルの詳細情報を提供します。

$field_map = \Drupal::entityManager()->getFieldMap();
$node_field_map = $field_map['node'];
$node_fields = array_keys($node_field_map['node']);

EntityFieldManagerInterface::getFieldDefinitions()さらにフィールドメタデータが必要な場合もあります。これは、詳細を解析するためのBaseFieldDefinitionFieldConfigオブジェクトの配列を生成します。

  $node_article_fields  =\Drupal::entityManager()->getFieldDefinitions('node','article');

ショーンに感謝します。上の画像にリストされているようなフィールドがありません。フィールドの下で私は得ています:comment, contact_message, file, node, shortcut, taxonomy_term, user, menu_link_content
Ajay Reddy

コードにタイプミスがありました。答えで述べたように、関数はエンティティ、フィールド名、フィールドの詳細を含むキー配列を生成します。
Shawn Conn

メソッド 'entityManager'は非推奨です。ほとんどの場合、代わりに\ Drupal :: entityTypeManager()を使用してください
JF Kiwad

2

field_info_instance()あなたが望むことをしますが、ドキュメントを見ると、D8では非推奨になっていることがわかります

Field::fieldInfo()->getBundleInstance($entity_type, $bundle, $field_name).

回答ありがとうございます。ただし、使用中のすべてのフィールドのリストを取得する必要があります。エンティティタイプ、バンドル、フィールド名で使用したくありません。参考画像アップロード用。
Ajay Reddy 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.