function EntityContentBase::processStubRow
Same name in other branches
- 9 core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::processStubRow()
- 8.9.x core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::processStubRow()
- 11.x core/modules/migrate/src/Plugin/migrate/destination/EntityContentBase.php \Drupal\migrate\Plugin\migrate\destination\EntityContentBase::processStubRow()
Overrides Entity::processStubRow
3 calls to EntityContentBase::processStubRow()
- EntityComment::processStubRow in core/
modules/ comment/ src/ Plugin/ migrate/ destination/ EntityComment.php - EntityContentComplete::getEntity in core/
modules/ migrate/ src/ Plugin/ migrate/ destination/ EntityContentComplete.php - Gets the entity.
- EntityUser::processStubRow in core/
modules/ user/ src/ Plugin/ migrate/ destination/ EntityUser.php
3 methods override EntityContentBase::processStubRow()
- EntityComment::processStubRow in core/
modules/ comment/ src/ Plugin/ migrate/ destination/ EntityComment.php - EntityFile::processStubRow in core/
modules/ file/ src/ Plugin/ migrate/ destination/ EntityFile.php - Populates as much of the stub row as possible.
- EntityUser::processStubRow in core/
modules/ user/ src/ Plugin/ migrate/ destination/ EntityUser.php
File
-
core/
modules/ migrate/ src/ Plugin/ migrate/ destination/ EntityContentBase.php, line 322
Class
- EntityContentBase
- Provides destination class for all content entities lacking a specific class.
Namespace
Drupal\migrate\Plugin\migrate\destinationCode
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));
}
$bundle = $row->getDestinationProperty($bundle_key) ?? $this->storage
->getEntityTypeId();
// Populate any required fields not already populated.
$fields = $this->entityFieldManager
->getFieldDefinitions($this->storage
->getEntityTypeId(), $bundle);
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 {
/** @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);
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.