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); }