public function processAddFieldDefinition(FormActionEvent $event)
{
// Reload the draft, to make sure we include any changes made in the current form submit
$contentTypeDraft = $this->contentTypeService->loadContentTypeDraft($event->getData()->contentTypeDraft->id);
$fieldTypeIdentifier = $event->getForm()->get('fieldTypeSelection')->getData();
$maxFieldPos = 0;
foreach ($contentTypeDraft->fieldDefinitions as $existingFieldDef) {
if ($existingFieldDef->position > $maxFieldPos) {
$maxFieldPos = $existingFieldDef->position;
}
}
$fieldDefCreateStruct = new FieldDefinitionCreateStruct(['fieldTypeIdentifier' => $fieldTypeIdentifier, 'identifier' => sprintf('new_%s_%d', $fieldTypeIdentifier, count($contentTypeDraft->fieldDefinitions) + 1), 'names' => [$event->getOption('languageCode') => 'New FieldDefinition'], 'position' => $maxFieldPos + 1]);
if (isset($this->groupsList)) {
$fieldDefCreateStruct->fieldGroup = $this->groupsList->getDefaultGroup();
}
$this->contentTypeService->addFieldDefinition($contentTypeDraft, $fieldDefCreateStruct);
}