function EntityDisplayRepository::getFormDisplay

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/EntityDisplayRepository.php \Drupal\Core\Entity\EntityDisplayRepository::getFormDisplay()
  2. 8.9.x core/lib/Drupal/Core/Entity/EntityDisplayRepository.php \Drupal\Core\Entity\EntityDisplayRepository::getFormDisplay()
  3. 11.x core/lib/Drupal/Core/Entity/EntityDisplayRepository.php \Drupal\Core\Entity\EntityDisplayRepository::getFormDisplay()

Returns the entity form display associated with a bundle and form mode.

The function reads the entity form display object from the current configuration, or returns a ready-to-use empty one if no configuration entry exists yet for this bundle and form mode. This streamlines manipulation of entity form displays by always returning a consistent object that reflects the current state of the configuration.

Example usage:

  • Set the 'body' field to be displayed with the 'text_textarea_with_summary' widget and the 'field_image' field to be hidden on article nodes in the 'default' form mode.
\Drupal::service('entity_display.repository')->getFormDisplay('node', 'article', 'default')
  ->setComponent('body', [
  'type' => 'text_textarea_with_summary',
  'weight' => 1,
])
  ->setComponent('field_image', [
  'region' => 'hidden',
])
  ->save();

Parameters

string $entity_type: The entity type.

string $bundle: The bundle.

string $form_mode: (optional) The form mode. Defaults to self::DEFAULT_DISPLAY_MODE.

Return value

\Drupal\Core\Entity\Display\EntityFormDisplayInterface The entity form display associated with the given form mode.

Overrides EntityDisplayRepositoryInterface::getFormDisplay

File

core/lib/Drupal/Core/Entity/EntityDisplayRepository.php, line 272

Class

EntityDisplayRepository
Provides a repository for entity display objects (view modes and form modes).

Namespace

Drupal\Core\Entity

Code

public function getFormDisplay($entity_type, $bundle, $form_mode = self::DEFAULT_DISPLAY_MODE) {
  $storage = $this->entityTypeManager
    ->getStorage('entity_form_display');
  // Try loading the entity from configuration; if not found, create a fresh
  // entity object. We do not preemptively create new entity form display
  // configuration entries for each existing entity type and bundle whenever a
  // new form mode becomes available. Instead, configuration entries are only
  // created when an entity form display is explicitly configured and saved.
  $entity_form_display = $storage->load($entity_type . '.' . $bundle . '.' . $form_mode);
  if (!$entity_form_display) {
    $entity_form_display = $storage->create([
      'targetEntityType' => $entity_type,
      'bundle' => $bundle,
      'mode' => $form_mode,
      'status' => TRUE,
    ]);
  }
  return $entity_form_display;
}

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