Skip to content

Commit 1d8ff13

Browse files
Merge pull request #6 from acseo/v3.1
V3.1
2 parents e21bda1 + a3513e5 commit 1d8ff13

8 files changed

+43
-12
lines changed

Form/Extension/FieldTypeHelpExtension.php

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
namespace ACSEO\Bundle\DynamicFormBundle\Form\Extension;
1212

1313
use Symfony\Component\Form\AbstractTypeExtension;
14+
use Symfony\Component\Form\Extension\Core\Type\FormType;
1415
use Symfony\Component\Form\FormBuilderInterface;
1516
use Symfony\Component\Form\FormInterface;
1617
use Symfony\Component\Form\FormView;

Form/Extension/FieldTypePictoExtension.php

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
namespace ACSEO\Bundle\DynamicFormBundle\Form\Extension;
1212

1313
use Symfony\Component\Form\AbstractTypeExtension;
14+
use Symfony\Component\Form\Extension\Core\Type\FormType;
1415
use Symfony\Component\Form\FormBuilderInterface;
1516
use Symfony\Component\Form\FormInterface;
1617
use Symfony\Component\Form\FormView;

Form/Extension/FieldTypePopinExtension.php

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
namespace ACSEO\Bundle\DynamicFormBundle\Form\Extension;
1212

1313
use Symfony\Component\Form\AbstractTypeExtension;
14+
use Symfony\Component\Form\Extension\Core\Type\FormType;
1415
use Symfony\Component\Form\FormBuilderInterface;
1516
use Symfony\Component\Form\FormInterface;
1617
use Symfony\Component\Form\FormView;

Form/Field/FieldBuilder.php

+26-1
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,32 @@ public function addAssociatedFielPostBindEvent($formFields, $builder)
198198
*/
199199
private function addSingleField($name, $field, $options, $builder)
200200
{
201-
$builder->add($name, $field->type, $options);
201+
$builder->add($name, self::getFormTypeClass($field->type), $options);
202+
}
203+
204+
/**
205+
* @param string $fieldType
206+
*/
207+
public static function getFormTypeClass($fieldType)
208+
{
209+
switch ($fieldType) {
210+
case 'checkbox':
211+
return \Symfony\Component\Form\Extension\Core\Type\CheckboxType::class;
212+
case 'choice':
213+
return \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class;
214+
case 'date':
215+
return \Symfony\Component\Form\Extension\Core\Type\DateType::class;
216+
case 'file':
217+
return \Symfony\Component\Form\Extension\Core\Type\FileType::class;
218+
case 'fieldset':
219+
return \ACSEO\Bundle\DynamicFormBundle\Form\Type\FieldsetType::class;
220+
case 'text':
221+
return \Symfony\Component\Form\Extension\Core\Type\TextType::class;
222+
case 'textarea':
223+
return \Symfony\Component\Form\Extension\Core\Type\TextareaType::class;
224+
}
225+
226+
return $fieldType;
202227
}
203228

204229
/**

Form/FormManager.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@
1010

1111
namespace ACSEO\Bundle\DynamicFormBundle\Form;
1212

13-
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
14-
use Symfony\Component\Form\FormFactoryInterface;
15-
use ACSEO\Bundle\DynamicFormBundle\Events;
1613
use ACSEO\Bundle\DynamicFormBundle\Event\FormEvent;
14+
use ACSEO\Bundle\DynamicFormBundle\Events;
1715
use ACSEO\Bundle\DynamicFormBundle\Form\Provider\FormProviderInterface;
16+
use ACSEO\Bundle\DynamicFormBundle\Form\Type\DynamicFormType;
17+
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
18+
use Symfony\Component\Form\FormFactoryInterface;
1819

1920
/**
2021
* Class FormManager

Form/Type/DynamicFormType.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
4848
{
4949
$formFields = json_decode($this->formStruct);
5050

51-
if (!count($formFields)) {
51+
if (!count((array) $formFields)) {
5252
throw new Exception('FormStruc is empty');
5353
}
5454

Form/Type/FieldsetType.php

+5-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
namespace ACSEO\Bundle\DynamicFormBundle\Form\Type;
44

5+
use ACSEO\Bundle\DynamicFormBundle\Form\Field\FieldBuilder;
56
use Symfony\Component\Form\AbstractType;
67
use Symfony\Component\Form\FormBuilderInterface;
78
use Symfony\Component\Form\FormInterface;
89
use Symfony\Component\Form\FormView;
9-
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
10+
use Symfony\Component\OptionsResolver\OptionsResolver;
1011

1112
/**
1213
* Class FieldsetType
@@ -15,9 +16,9 @@
1516
class FieldsetType extends AbstractType
1617
{
1718
/**
18-
* @param OptionsResolverInterface $resolver
19+
* {@inheritdoc}
1920
*/
20-
public function setDefaultOptions(OptionsResolverInterface $resolver)
21+
public function configureOptions(OptionsResolver $resolver)
2122
{
2223
$resolver->setDefaults(array(
2324
'title' => false,
@@ -34,7 +35,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
3435
{
3536
if (!empty($options['subforms'])) {
3637
foreach ($options['subforms'] as $f) {
37-
$builder->add($f['name'], $f['type'], $f['attr']);
38+
$builder->add($f['name'], FieldBuilder::getFormTypeClass($f['type']), $f['attr']);
3839
}
3940
}
4041
}

Form/Type/VirtualType.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@
1010

1111
namespace ACSEO\Bundle\DynamicFormBundle\Form\Type;
1212

13+
use ACSEO\Bundle\DynamicFormBundle\Form\Field\FieldBuilder;
1314
use Symfony\Component\Form\AbstractType;
1415
use Symfony\Component\Form\FormBuilderInterface;
15-
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
16-
use Symfony\Component\Form\FormView;
1716
use Symfony\Component\Form\FormInterface;
17+
use Symfony\Component\Form\FormView;
18+
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
1819

1920
/**
2021
* Virtual Type : used for collection form type
@@ -45,7 +46,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
4546
unset($this->options['data']);
4647
}
4748

48-
$builder->add('value', $this->field->type, $this->options);
49+
$builder->add('value', FieldBuilder::getFormTypeClass($this->field->type), $this->options);
4950
}
5051

5152
/**

0 commit comments

Comments
 (0)