public function EntityProcessorBase::mappingFormAlter in Feeds 8.3
Alter mapping form.
Parameters
array $form: The mapping form definition.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the mapping form.
Overrides MappingPluginFormInterface::mappingFormAlter
File
- src/
Feeds/ Processor/ EntityProcessorBase.php, line 904
Class
- EntityProcessorBase
- Defines a base entity processor.
Namespace
Drupal\feeds\Feeds\ProcessorCode
public function mappingFormAlter(array &$form, FormStateInterface $form_state) {
$added_target = $form_state
->getValue('add_target');
if (!$added_target) {
// No target was added this time around. Abort.
return;
}
// When adding a mapping target to entity ID, tick 'unique' by default.
$id_key = $this->entityType
->getKey('id');
$mappings = $this->feedType
->getMappings();
$last_delta = array_keys($mappings)[count($mappings) - 1];
$mapping = end($mappings);
if ($mapping['target'] != $added_target) {
return;
}
$target_definition = $this->feedType
->getTargetPlugin($last_delta)
->getTargetDefinition();
if (!$target_definition instanceof FieldTargetDefinition) {
return;
}
/** @var \Drupal\Core\Field\FieldDefinitionInterface $field_definition */
$field_definition = $target_definition
->getFieldDefinition();
if ($field_definition
->getName() != $id_key) {
return;
}
// We made it! Set property as unique.
$form['mappings'][$last_delta]['unique'][$field_definition
->getMainPropertyName()]['#default_value'] = TRUE;
}