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.
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.
Antworten:
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 nach Entitätstyp verschlüsseltes Array. 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.
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 möchten. Es erzeugt ein Array von BaseFieldDefinition
& FieldConfig
Objekten, die Sie für weitere Details analysieren können.
$node_article_fields =\Drupal::entityManager()->getFieldDefinitions('node','article');
comment, contact_message, file, node, shortcut, taxonomy_term, user, menu_link_content
field_info_instance()
würde tun, was Sie wollen, aber wenn Sie in den Dokumenten schauen, werden Sie sehen, dass es in D8 zugunsten von veraltet ist
Field::fieldInfo()->getBundleInstance($entity_type, $bundle, $field_name).