66 lines
1.9 KiB
66 lines
1.9 KiB
<?php |
|
|
|
namespace Drupal\islandora\Form\AddChildrenWizard; |
|
|
|
use Drupal\Core\Entity\EntityFieldManagerInterface; |
|
use Drupal\Core\Field\FieldDefinitionInterface; |
|
|
|
/** |
|
* Field lookup helper trait. |
|
*/ |
|
trait FieldTrait { |
|
|
|
use MediaTypeTrait; |
|
|
|
/** |
|
* The entity field manager service. |
|
* |
|
* @var \Drupal\Core\Entity\EntityFieldManagerInterface|null |
|
*/ |
|
protected ?EntityFieldManagerInterface $entityFieldManager = NULL; |
|
|
|
/** |
|
* Helper; get field instance, given our required values. |
|
* |
|
* @param array $values |
|
* See ::getMediaType() for which values are required. |
|
* |
|
* @return \Drupal\Core\Field\FieldDefinitionInterface |
|
* The target field. |
|
* |
|
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException |
|
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException |
|
*/ |
|
protected function getField(array $values): FieldDefinitionInterface { |
|
$media_type = $this->getMediaType($values); |
|
$media_source = $media_type->getSource(); |
|
$source_field = $media_source->getSourceFieldDefinition($media_type); |
|
|
|
$fields = $this->entityFieldManager()->getFieldDefinitions('media', $media_type->id()); |
|
|
|
return $fields[$source_field->getFieldStorageDefinition()->getName()] ?? |
|
$media_source->createSourceField($media_type); |
|
} |
|
|
|
/** |
|
* Lazy-initialization of the entity field manager service. |
|
* |
|
* @return \Drupal\Core\Entity\EntityFieldManagerInterface |
|
* The entity field manager service. |
|
*/ |
|
protected function entityFieldManager() : EntityFieldManagerInterface { |
|
if ($this->entityFieldManager === NULL) { |
|
$this->setEntityFieldManager(\Drupal::service('entity_field.manager')); |
|
} |
|
return $this->entityFieldManager; |
|
} |
|
|
|
/** |
|
* Setter for entity field manager. |
|
*/ |
|
public function setEntityFieldManager(EntityFieldManagerInterface $entity_field_manager) : self { |
|
$this->entityFieldManager = $entity_field_manager; |
|
return $this; |
|
} |
|
|
|
}
|
|
|