trait FieldStorageCreationTrait

Same name and namespace in other branches
  1. 11.x core/modules/field_ui/src/Form/FieldStorageCreationTrait.php \Drupal\field_ui\Form\FieldStorageCreationTrait

Provides common functionality for adding or re-using a field.

Hierarchy

File

core/modules/field_ui/src/Form/FieldStorageCreationTrait.php, line 8

Namespace

Drupal\field_ui\Form
View source
trait FieldStorageCreationTrait {
  
  /**
   * Configures the field for the default form mode.
   *
   * @param string $field_name
   *   The field name.
   * @param array[] $widget_settings
   *   (optional) Array of widget settings, keyed by form mode. Defaults to an
   *   empty array.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  protected function configureEntityFormDisplay(string $field_name, array $widget_settings = []) {
    // For a new field, only $mode = 'default' should be set. Use the
    // preconfigured or default widget and settings. The field will not appear
    // in other form modes until it is explicitly configured.
    foreach ($widget_settings as $mode => $options) {
      $form_display = $this->entityDisplayRepository
        ->getFormDisplay($this->entityTypeId, $this->bundle, $mode);
      if ($form_display->status()) {
        $form_display->setComponent($field_name, $options)
          ->save();
      }
    }
    if (empty($widget_settings)) {
      $this->entityDisplayRepository
        ->getFormDisplay($this->entityTypeId, $this->bundle, 'default')
        ->setComponent($field_name, [])
        ->save();
    }
  }
  
  /**
   * Configures the field for the default view mode.
   *
   * @param string $field_name
   *   The field name.
   * @param array[] $formatter_settings
   *   (optional) An array of settings, keyed by view mode. Only the 'type' key
   *   of the inner array is used, and the value should be the plugin ID of a
   *   formatter. Defaults to an empty array.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  protected function configureEntityViewDisplay(string $field_name, array $formatter_settings = []) {
    // For a new field, only $mode = 'default' should be set. Use the
    // preconfigured or default formatter and settings. The field stays hidden
    // for other view modes until it is explicitly configured.
    foreach ($formatter_settings as $mode => $options) {
      $view_display = $this->entityDisplayRepository
        ->getViewDisplay($this->entityTypeId, $this->bundle, $mode);
      if ($view_display->status()) {
        $view_display->setComponent($field_name, $options)
          ->save();
      }
    }
    if (empty($formatter_settings)) {
      $this->entityDisplayRepository
        ->getViewDisplay($this->entityTypeId, $this->bundle)
        ->setComponent($field_name, [])
        ->save();
    }
  }

}

Members

Title Sort descending Modifiers Object type Summary
FieldStorageCreationTrait::configureEntityFormDisplay protected function Configures the field for the default form mode.
FieldStorageCreationTrait::configureEntityViewDisplay protected function Configures the field for the default view mode.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.