public function EntityReferenceField::onUnserializeContentField in Acquia Content Hub 8.2
Extracts the target storage and retrieves the referenced entity.
Parameters
\Drupal\acquia_contenthub\Event\UnserializeCdfEntityFieldEvent $event: The unserialize event.
Throws
\Exception
File
- src/
EventSubscriber/ UnserializeContentField/ EntityReferenceField.php, line 43
Class
- EntityReferenceField
- Entity/image/file field reference handling.
Namespace
Drupal\acquia_contenthub\EventSubscriber\UnserializeContentFieldCode
public function onUnserializeContentField(UnserializeCdfEntityFieldEvent $event) {
$field = $event
->getField();
if (!in_array($event
->getFieldMetadata()['type'], $this->fieldTypes)) {
return;
}
$values = [];
if (!empty($field['value'])) {
foreach ($field['value'] as $langcode => $value) {
if (!$value) {
$values[$langcode][$event
->getFieldName()] = [];
continue;
}
if (!is_array($value)) {
$entity = $this
->getEntity($value, $event);
$values[$langcode][$event
->getFieldName()] = $entity
->id();
// @todo handle single value ERR fields.
}
else {
foreach ($value as $delta => $item) {
$entity = $this
->getEntity($item, $event);
if ($event
->getFieldMetadata()['type'] == 'entity_reference_revisions') {
/** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
$values[$langcode][$event
->getFieldName()][] = [
'target_id' => $entity
->id(),
'target_revision_id' => $entity
->getRevisionId(),
];
}
else {
$values[$langcode][$event
->getFieldName()][]['target_id'] = $entity
->id();
}
}
}
}
}
$event
->setValue($values);
$event
->stopPropagation();
}