diff --git a/core/modules/field_ui/src/FieldConfigListBuilder.php b/core/modules/field_ui/src/FieldConfigListBuilder.php index 24e772ff02..d66d35f9cd 100644 --- a/core/modules/field_ui/src/FieldConfigListBuilder.php +++ b/core/modules/field_ui/src/FieldConfigListBuilder.php @@ -4,6 +4,7 @@ use Drupal\Component\Utility\Html; use Drupal\Core\Config\Entity\ConfigEntityListBuilder; +use Drupal\Core\Entity\EntityFieldManagerInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Entity\EntityTypeInterface; @@ -54,28 +55,48 @@ class FieldConfigListBuilder extends ConfigEntityListBuilder { */ protected $fieldTypeManager; + /** + * The entity field manager. + * + * @var \Drupal\Core\Entity\EntityFieldManagerInterface + */ + protected $entityFieldManager; + /** * Constructs a new class instance. * * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type * The entity type definition. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager - * The entity manager. + * The entity type manager. * @param \Drupal\Core\Field\FieldTypePluginManagerInterface $field_type_manager - * The field type manager + * The field type manager. + * @param \Drupal\Core\Entity\EntityFieldManagerInterface|null $entity_field_manager + * The entity field manager. */ - public function __construct(EntityTypeInterface $entity_type, EntityTypeManagerInterface $entity_type_manager, FieldTypePluginManagerInterface $field_type_manager) { + public function __construct(EntityTypeInterface $entity_type, EntityTypeManagerInterface $entity_type_manager, FieldTypePluginManagerInterface $field_type_manager, EntityFieldManagerInterface $entity_field_manager = NULL) { parent::__construct($entity_type, $entity_type_manager->getStorage($entity_type->id())); $this->entityTypeManager = $entity_type_manager; $this->fieldTypeManager = $field_type_manager; + if (!$entity_field_manager) { + @trigger_error('Calling FieldConfigListBuilder::__construct() with the $entity_field_manager argument is supported in drupal:8.7.0 and will be required before drupal:9.0.0. See https://www.drupal.org/node/2549139.', E_USER_DEPRECATED); + + $entity_field_manager = \Drupal::service('entity_field.manager'); + } + $this->entityFieldManager = $entity_field_manager; } /** * {@inheritdoc} */ public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) { - return new static($entity_type, $container->get('entity_type.manager'), $container->get('plugin.manager.field.field_type')); + return new static( + $entity_type, + $container->get('entity_type.manager'), + $container->get('plugin.manager.field.field_type'), + $container->get('entity_field.manager') + ); } /** @@ -96,7 +117,7 @@ public function render($target_entity_type_id = NULL, $target_bundle = NULL) { * {@inheritdoc} */ public function load() { - $entities = array_filter($this->entityManager->getFieldDefinitions($this->targetEntityTypeId, $this->targetBundle), function ($field_definition) { + $entities = array_filter($this->entityFieldManager->getFieldDefinitions($this->targetEntityTypeId, $this->targetBundle), function ($field_definition) { return $field_definition instanceof FieldConfigInterface; }); @@ -129,7 +150,7 @@ public function buildRow(EntityInterface $field_config) { $field_storage = $field_config->getFieldStorageDefinition(); $route_parameters = [ 'field_config' => $field_config->id(), - ] + FieldUI::getRouteBundleParameter($this->entityManager->getDefinition($this->targetEntityTypeId), $this->targetBundle); + ] + FieldUI::getRouteBundleParameter($this->entityTypeManager->getDefinition($this->targetEntityTypeId), $this->targetBundle); $row = [ 'id' => Html::getClass($field_config->getName()),