Ottieni le impostazioni di un'istanza di campo


8

Qual è l'equivalente di field_info_instance()Drupal 8?

Le impostazioni di campo predefinite sono memorizzate come configurazione in un file come field.field.ENTITYTYPE.BUNDLE.FIELDNAME.yml, ma come posso ottenere il loro valore attuale?

Risposte:


9

Utilizzando il servizio entity_field.manager , è possibile ottenere una matrice di classi BaseFieldDefinition. Anche questo servizio è iniettabile, ma per il codice di lavoro copia-incolla è possibile effettuare le seguenti operazioni:

$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);

4
Se hai un'entità e lavori con quella, puoi anche accedere alle definizioni dei campi dell'oggetto entità con $ entity-> getFieldDefinitions ().
Berdir,

2

Utilizzando un'istanza di campo:

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

Ad esempio, in un widget di campo:

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;
}

0

Volevo ottenere il tipo e l'etichetta dalla definizione del campo. Questo non ha funzionato:

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

Questo ha funzionato:

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

0

Il modo più semplice per ottenere la configurazione del campo è utilizzare 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);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.