it-swarm.com.de

Wie erhalte ich eine Liste der Felder, die in Entitäten verwendet werden?

Ich möchte alle Felder abrufen, die Entitäten verwenden (einschließlich gesperrter Felder).

Wie kann ich eine Liste der Felder abrufen, die in Entitäten verwendet werden?

Wie wir in Admin/Berichte/Felder bekommen.

(enter image description here

7
Ajay Reddy

Ich würde EntityFieldManager :: getFieldMap empfehlen. Der EntityManager ist nur ein Dienst zum Bereitstellen von Funktionen aus anderen Klassen.

Aus der Dokumentation:

Rückgabewert

array Ein Array, das nach Entitätstyp verschlüsselt ist. Jeder Wert ist ein Array, dessen Schlüssel Feldnamen sind, und der Wert ist ein Array mit zwei Einträgen:

  • Typ : Der Feldtyp.
  • Bundles : Ein assoziatives Array der Bundles, in denen das Feld angezeigt wird, wobei die Schlüssel und Werte beide der Computername des Bundles sind.
8
Jimmy Ko

EntityFieldManagerInterface::getFieldMap() erzeugt ein verschlüsseltes Array nach Entitätstyp> Feldname mit weiteren Informationen zum Feldtyp und den zugehörigen Bundles.

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

Es gibt auch EntityFieldManagerInterface::getFieldDefinitions() , wenn Sie weitere Feldmetadaten wünschen. Es wird ein Array von BaseFieldDefinition & FieldConfig Objekten erzeugt, die Sie für weitere Details analysieren können.

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

field_info_instance() würde tun, was Sie wollen, aber wenn Sie in docs schauen, werden Sie sehen, dass es in D8 zugunsten von veraltet ist

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