From 588de8631a8c70c23a72cc39c261e9216d96c364 Mon Sep 17 00:00:00 2001 From: Niels Nijens Date: Fri, 30 Jun 2017 09:27:10 +0200 Subject: [PATCH] Fix adding formfields not available within the object model --- Form/Type/FlexModelFormType.php | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Form/Type/FlexModelFormType.php b/Form/Type/FlexModelFormType.php index 5e127ab..c89d473 100644 --- a/Form/Type/FlexModelFormType.php +++ b/Form/Type/FlexModelFormType.php @@ -58,16 +58,19 @@ public function buildForm(FormBuilderInterface $builder, array $options) if (is_array($formConfiguration)) { foreach ($formConfiguration['fields'] as $formFieldConfiguration) { $fieldConfiguration = $this->flexModel->getField($objectName, $formFieldConfiguration['name']); + if (is_array($fieldConfiguration) === false) { + $fieldConfiguration = array(); + } $fieldType = $this->getFieldType($formFieldConfiguration, $fieldConfiguration); $fieldOptions = $this->getFieldOptions($formFieldConfiguration, $fieldConfiguration); - $fieldName = $fieldConfiguration['name']; + $fieldName = $formFieldConfiguration['name']; if ($fieldType === FileType::class) { $fieldName .= '_upload'; } $builder->add($fieldName, $fieldType, $fieldOptions); - if ($fieldConfiguration['datatype'] === 'HTML') { + if (isset($fieldConfiguration['datatype']) && $fieldConfiguration['datatype'] === 'HTML') { $builder->get($fieldName)->addModelTransformer(new HTMLPurifierTransformer()); } } @@ -156,13 +159,22 @@ private function getFieldType(array $formFieldConfiguration, array $fieldConfigu protected function getFieldOptions(array $formFieldConfiguration, array $fieldConfiguration) { $options = array( - 'label' => $fieldConfiguration['label'], + 'label' => '', 'required' => false, 'constraints' => array(), ); + if (empty($fieldConfiguration)) { + $options['mapped'] = false; + } + if (isset($fieldConfiguration['label'])) { + $options['label'] = $fieldConfiguration['label']; + } if (isset($fieldConfiguration['required'])) { $options['required'] = $fieldConfiguration['required']; } + if (isset($formFieldConfiguration['label'])) { + $options['label'] = $formFieldConfiguration['label']; + } if (isset($formFieldConfiguration['widget'])) { $options['widget'] = $formFieldConfiguration['widget']; } @@ -206,6 +218,10 @@ public function addFieldPlaceholder(array &$options, array $formFieldConfigurati */ private function addFieldOptionsByDatatype(array &$options, array $fieldConfiguration) { + if (isset($fieldConfiguration['datatype']) === false) { + return; + } + switch ($fieldConfiguration['datatype']) { case 'SET': $options['multiple'] = true;