コード例 #1
0
 /**
  * {@inheritdoc}
  */
 protected function mapToStorageRecord(EntityInterface $entity)
 {
     $record = parent::mapToStorageRecord($entity);
     $class = $this->fieldTypeManager->getPluginClass($record['field_type']);
     $record['settings'] = $class::fieldSettingsToConfigData($record['settings']);
     return $record;
 }
コード例 #2
0
 /**
  * Populates as much of the stub row as possible.
  *
  * @param \Drupal\migrate\Row $row
  *   The row of data.
  */
 protected function processStubRow(Row $row)
 {
     $bundle_key = $this->getKey('bundle');
     if ($bundle_key && empty($row->getDestinationProperty($bundle_key))) {
         if (empty($this->bundles)) {
             throw new MigrateException('Stubbing failed, no bundles available for entity type: ' . $this->storage->getEntityTypeId());
         }
         $row->setDestinationProperty($bundle_key, reset($this->bundles));
     }
     // Populate any required fields not already populated.
     $fields = $this->entityManager->getFieldDefinitions($this->storage->getEntityTypeId(), $bundle_key);
     foreach ($fields as $field_name => $field_definition) {
         if ($field_definition->isRequired() && is_null($row->getDestinationProperty($field_name))) {
             // Use the configured default value for this specific field, if any.
             if ($default_value = $field_definition->getDefaultValueLiteral()) {
                 $values[] = $default_value;
             } else {
                 // Otherwise, ask the field type to generate a sample value.
                 $field_type = $field_definition->getType();
                 /** @var \Drupal\Core\Field\FieldItemInterface $field_type_class */
                 $field_type_class = $this->fieldTypeManager->getPluginClass($field_definition->getType());
                 $values = $field_type_class::generateSampleValue($field_definition);
                 if (is_null($values)) {
                     // Handle failure to generate a sample value.
                     throw new MigrateException('Stubbing failed, unable to generate value for field ' . $field_name);
                 }
             }
             $row->setDestinationProperty($field_name, $values);
         }
     }
 }