Skip to content
This repository was archived by the owner on Jul 17, 2020. It is now read-only.

Commit 24fc695

Browse files
authored
Merge pull request #63 from niels-nijens/non-model-formfields
Fix adding formfields not available within the object model
2 parents 5a4664b + 588de86 commit 24fc695

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

Form/Type/FlexModelFormType.php

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,19 @@ public function buildForm(FormBuilderInterface $builder, array $options)
5858
if (is_array($formConfiguration)) {
5959
foreach ($formConfiguration['fields'] as $formFieldConfiguration) {
6060
$fieldConfiguration = $this->flexModel->getField($objectName, $formFieldConfiguration['name']);
61+
if (is_array($fieldConfiguration) === false) {
62+
$fieldConfiguration = array();
63+
}
6164

6265
$fieldType = $this->getFieldType($formFieldConfiguration, $fieldConfiguration);
6366
$fieldOptions = $this->getFieldOptions($formFieldConfiguration, $fieldConfiguration);
64-
$fieldName = $fieldConfiguration['name'];
67+
$fieldName = $formFieldConfiguration['name'];
6568
if ($fieldType === FileType::class) {
6669
$fieldName .= '_upload';
6770
}
6871

6972
$builder->add($fieldName, $fieldType, $fieldOptions);
70-
if ($fieldConfiguration['datatype'] === 'HTML') {
73+
if (isset($fieldConfiguration['datatype']) && $fieldConfiguration['datatype'] === 'HTML') {
7174
$builder->get($fieldName)->addModelTransformer(new HTMLPurifierTransformer());
7275
}
7376
}
@@ -156,13 +159,22 @@ private function getFieldType(array $formFieldConfiguration, array $fieldConfigu
156159
protected function getFieldOptions(array $formFieldConfiguration, array $fieldConfiguration)
157160
{
158161
$options = array(
159-
'label' => $fieldConfiguration['label'],
162+
'label' => '',
160163
'required' => false,
161164
'constraints' => array(),
162165
);
166+
if (empty($fieldConfiguration)) {
167+
$options['mapped'] = false;
168+
}
169+
if (isset($fieldConfiguration['label'])) {
170+
$options['label'] = $fieldConfiguration['label'];
171+
}
163172
if (isset($fieldConfiguration['required'])) {
164173
$options['required'] = $fieldConfiguration['required'];
165174
}
175+
if (isset($formFieldConfiguration['label'])) {
176+
$options['label'] = $formFieldConfiguration['label'];
177+
}
166178
if (isset($formFieldConfiguration['widget'])) {
167179
$options['widget'] = $formFieldConfiguration['widget'];
168180
}
@@ -206,6 +218,10 @@ public function addFieldPlaceholder(array &$options, array $formFieldConfigurati
206218
*/
207219
private function addFieldOptionsByDatatype(array &$options, array $fieldConfiguration)
208220
{
221+
if (isset($fieldConfiguration['datatype']) === false) {
222+
return;
223+
}
224+
209225
switch ($fieldConfiguration['datatype']) {
210226
case 'SET':
211227
$options['multiple'] = true;

0 commit comments

Comments
 (0)