Rufen Sie die Einstellungen einer Feldinstanz ab

8

Was entspricht field_info_instance()Drupal 8?

Die Standardfeldeinstellungen werden als Konfiguration in einer Datei wie field.field.ENTITYTYPE.BUNDLE.FIELDNAME.yml gespeichert. Wie erhalte ich jedoch den aktuellen Wert?

Meisterhäuptling
quelle

Antworten:

9

Mit dem Dienst entity_field.manager können Sie ein Array von BaseFieldDefinition-Klassen abrufen. Dieser Dienst ist ebenfalls injizierbar, aber für das Kopieren und Einfügen von Arbeitscode können Sie Folgendes tun:

$bundle_fields = \Drupal::getContainer()->get('entity_field.manager')->getFieldDefinitions($entity_type, $bundle);
$field_definition = $bundle_fields[$field_name];
$catalog_id = $field_definition->getSetting($setting_name);
Meisterhäuptling
quelle
4
Wenn Sie eine Entität haben und damit arbeiten, können Sie auch mit $ entity-> getFieldDefinitions () auf die Felddefinitionen Ihres Entitätsobjekts zugreifen.
Berdir
2

Verwenden einer Feldinstanz:

$settings = $field->getFieldDefinition()->getSettings();

Zum Beispiel in einem Feld-Widget:

public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
  $element = [];

  // Get the settings.
  $settings = $items[$delta]->getFieldDefinition()->getSettings();

  // ... build render array

  return $element;
}
Tim
quelle
0

Ich wollte den Typ und die Beschriftung aus der Felddefinition erhalten. Das hat nicht funktioniert:

$setting_name = 'label';
$label = $field_definition->getSetting($setting_name);

Das hat funktioniert:

$label = $field_definition->getLabel();
$type = $field_definition->getType();
andres_de
quelle
0

Der einfachste Weg, um die Feldkonfiguration abzurufen, ist die Verwendung von EntityTypeManager .

$entity_type = 'node';// node, taxonomy_term, taxonomy_vocabulary, ...
$bundle = 'article';// the content type machine name
$field = 'field_article_tags';// the field machine name

$fieldConfig =  \Drupal::entityTypeManager()
  ->getStorage('field_config')
  ->load($entity_type . '.' . $bundle . '.' . $field);
Antoine Subit
quelle