コード例 #1
0
 /**
  * {@inheritdoc}
  */
 public static function processDefaultValue($default_value, FieldableEntityInterface $entity, FieldDefinitionInterface $definition)
 {
     $default_value = parent::processDefaultValue($default_value, $entity, $definition);
     if ($default_value) {
         // Convert UUIDs to numeric IDs.
         $uuids = array();
         foreach ($default_value as $delta => $properties) {
             if (isset($properties['target_uuid'])) {
                 $uuids[$delta] = $properties['target_uuid'];
             }
         }
         if ($uuids) {
             $target_type = $definition->getSetting('target_type');
             $entity_ids = \Drupal::entityQuery($target_type)->condition('uuid', $uuids, 'IN')->execute();
             $entities = \Drupal::entityManager()->getStorage($target_type)->loadMultiple($entity_ids);
             $entity_uuids = array();
             foreach ($entities as $id => $entity) {
                 $entity_uuids[$entity->uuid()] = $id;
             }
             foreach ($uuids as $delta => $uuid) {
                 if (isset($entity_uuids[$uuid])) {
                     $default_value[$delta]['target_id'] = $entity_uuids[$uuid];
                     unset($default_value[$delta]['target_uuid']);
                 } else {
                     unset($default_value[$delta]);
                 }
             }
         }
         // Ensure we return consecutive deltas, in case we removed unknown UUIDs.
         $default_value = array_values($default_value);
     }
     return $default_value;
 }