Skip to content

Commit bd54113

Browse files
committed
Merge pull request #28 from King2500/fix-sf27-deprecations
Add configureOptions method to form types for SF 2.7
2 parents 948c8ea + a3fb71c commit bd54113

6 files changed

+106
-42
lines changed

Form/Type/AttachmentType.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Symfony\Component\Form\FormBuilderInterface;
1111
use Symfony\Component\Form\FormInterface;
1212
use Symfony\Component\Form\FormView;
13+
use Symfony\Component\OptionsResolver\OptionsResolver;
1314
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
1415

1516
class AttachmentType extends AbstractType
@@ -57,11 +58,17 @@ public function getName()
5758
return 'infinite_form_attachment';
5859
}
5960

60-
public function setDefaultOptions(OptionsResolverInterface $resolver)
61+
public function configureOptions(OptionsResolver $resolver)
6162
{
6263
$resolver->setRequired(array('class'));
6364
$resolver->setDefaults(array(
6465
'secret' => $this->defaultSecret,
6566
));
6667
}
68+
69+
// BC for SF < 2.7
70+
public function setDefaultOptions(OptionsResolverInterface $resolver)
71+
{
72+
$this->configureOptions($resolver);
73+
}
6774
}

Form/Type/CheckboxGridType.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Component\Form\FormBuilderInterface;
1515
use Symfony\Component\Form\FormInterface;
1616
use Symfony\Component\Form\FormView;
17+
use Symfony\Component\OptionsResolver\OptionsResolver;
1718
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
1819

1920
/**
@@ -54,7 +55,7 @@ public function getName()
5455
return 'infinite_form_checkbox_grid';
5556
}
5657

57-
public function setDefaultOptions(OptionsResolverInterface $resolver)
58+
public function configureOptions(OptionsResolver $resolver)
5859
{
5960
$resolver->setDefaults(array(
6061
'class' => null,
@@ -68,4 +69,10 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
6869
'y_path',
6970
));
7071
}
72+
73+
// BC for SF < 2.7
74+
public function setDefaultOptions(OptionsResolverInterface $resolver)
75+
{
76+
$this->configureOptions($resolver);
77+
}
7178
}

Form/Type/CheckboxRowType.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Component\Form\FormBuilderInterface;
1515
use Symfony\Component\Form\FormInterface;
1616
use Symfony\Component\Form\FormView;
17+
use Symfony\Component\OptionsResolver\OptionsResolver;
1718
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
1819

1920
class CheckboxRowType extends AbstractType
@@ -34,12 +35,18 @@ public function getName()
3435
return 'infinite_form_checkbox_row';
3536
}
3637

37-
public function setDefaultOptions(OptionsResolverInterface $resolver)
38+
public function configureOptions(OptionsResolver $resolver)
3839
{
3940
$resolver->setDefaults(array(
4041
'cell_filter' => null,
4142
'choice_list' => null,
4243
'row' => null,
4344
));
4445
}
46+
47+
// BC for SF < 2.7
48+
public function setDefaultOptions(OptionsResolverInterface $resolver)
49+
{
50+
$this->configureOptions($resolver);
51+
}
4552
}

Form/Type/EntityCheckboxGridType.php

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Form\AbstractType;
1616
use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException;
1717
use Symfony\Component\OptionsResolver\Options;
18+
use Symfony\Component\OptionsResolver\OptionsResolver;
1819
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
1920

2021
/**
@@ -39,10 +40,25 @@ public function getParent()
3940
return 'infinite_form_checkbox_grid';
4041
}
4142

42-
public function setDefaultOptions(OptionsResolverInterface $resolver)
43+
public function configureOptions(OptionsResolver $resolver)
4344
{
44-
$registry = $this->registry; // for closures
45+
$this->internalConfigureOptions($resolver);
46+
47+
$resolver->setNormalizer('em', $this->getEntityManagerNormalizer());
48+
}
4549

50+
// BC for SF < 2.7
51+
public function setDefaultOptions(OptionsResolverInterface $resolver)
52+
{
53+
$this->internalConfigureOptions($resolver);
54+
55+
$resolver->setNormalizers(array(
56+
'em' => $this->getEntityManagerNormalizer(),
57+
));
58+
}
59+
60+
private function internalConfigureOptions(OptionsResolver $resolver)
61+
{
4662
// X Axis defaults
4763
$defaultXClass = function (Options $options) {
4864
/** @var $em \Doctrine\ORM\EntityManager */
@@ -91,21 +107,6 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
91107
);
92108
};
93109

94-
// Entity manager 'normaliser' - turns an entity manager name into an entity manager instance
95-
$em = function (Options $options, $emName) use ($registry) {
96-
if ($emName !== null) {
97-
return $registry->getManager($emName);
98-
}
99-
100-
$em = $registry->getManagerForClass($options['class']);
101-
102-
if ($em === null) {
103-
throw new InvalidOptionsException(sprintf('"%s" is not a Doctrine entity', $options['class']));
104-
}
105-
106-
return $em;
107-
};
108-
109110
$resolver->setDefaults(array(
110111
'em' => null,
111112

@@ -129,9 +130,25 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
129130
'x_path',
130131
'y_path',
131132
));
133+
}
134+
135+
private function getEntityManagerNormalizer()
136+
{
137+
$registry = $this->registry; // for closures
132138

133-
$resolver->setNormalizers(array(
134-
'em' => $em,
135-
));
139+
// Entity manager 'normaliser' - turns an entity manager name into an entity manager instance
140+
return function (Options $options, $emName) use ($registry) {
141+
if ($emName !== null) {
142+
return $registry->getManager($emName);
143+
}
144+
145+
$em = $registry->getManagerForClass($options['class']);
146+
147+
if ($em === null) {
148+
throw new InvalidOptionsException(sprintf('"%s" is not a Doctrine entity', $options['class']));
149+
}
150+
151+
return $em;
152+
};
136153
}
137154
}

Form/Type/EntitySearchType.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Symfony\Component\Form\FormBuilderInterface;
88
use Symfony\Component\Form\FormInterface;
99
use Symfony\Component\Form\FormView;
10+
use Symfony\Component\OptionsResolver\OptionsResolver;
1011
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
1112

1213
class EntitySearchType extends AbstractType
@@ -36,7 +37,7 @@ public function buildView(FormView $view, FormInterface $form, array $options)
3637
$view->vars['search_route'] = $form->getConfig()->getAttribute('search_route');
3738
}
3839

39-
public function setDefaultOptions(OptionsResolverInterface $resolver)
40+
public function configureOptions(OptionsResolver $resolver)
4041
{
4142
$resolver->setDefaults(array(
4243
'allow_not_found' => false,
@@ -50,6 +51,12 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
5051
'class'
5152
));
5253
}
54+
55+
// BC for SF < 2.7
56+
public function setDefaultOptions(OptionsResolverInterface $resolver)
57+
{
58+
$this->configureOptions($resolver);
59+
}
5360

5461
public function getName()
5562
{

Form/Type/PolyCollectionType.php

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\Form\FormTypeInterface;
1717
use Symfony\Component\Form\FormView;
1818
use Symfony\Component\OptionsResolver\Options;
19+
use Symfony\Component\OptionsResolver\OptionsResolver;
1920
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
2021

2122
/**
@@ -130,18 +131,52 @@ function (FormView $prototype) {
130131
}
131132
}
132133
}
134+
135+
/**
136+
* {@inheritdoc}
137+
*/
138+
public function getName()
139+
{
140+
return 'infinite_form_polycollection';
141+
}
133142

134143
/**
135144
* {@inheritdoc}
136145
*/
146+
public function configureOptions(OptionsResolver $resolver)
147+
{
148+
$this->internalConfigureOptions($resolver);
149+
150+
$resolver->setAllowedTypes('types', 'array');
151+
152+
$resolver->setNormalizer('options', $this->getOptionsNormalizer());
153+
}
154+
155+
// BC for SF < 2.7
137156
public function setDefaultOptions(OptionsResolverInterface $resolver)
138157
{
139-
$optionsNormalizer = function (Options $options, $value) {
158+
$this->internalConfigureOptions($resolver);
159+
160+
$resolver->setAllowedTypes(array(
161+
'types' => 'array'
162+
));
163+
164+
$resolver->setNormalizers(array(
165+
'options' => $this->getOptionsNormalizer(),
166+
));
167+
}
168+
169+
private function getOptionsNormalizer()
170+
{
171+
return function (Options $options, $value) {
140172
$value['block_name'] = 'entry';
141173

142174
return $value;
143175
};
144-
176+
}
177+
178+
private function internalConfigureOptions(OptionsResolverInterface $resolver)
179+
{
145180
$resolver->setDefaults(array(
146181
'allow_add' => false,
147182
'allow_delete' => false,
@@ -154,21 +189,5 @@ public function setDefaultOptions(OptionsResolverInterface $resolver)
154189
$resolver->setRequired(array(
155190
'types'
156191
));
157-
158-
$resolver->setAllowedTypes(array(
159-
'types' => 'array'
160-
));
161-
162-
$resolver->setNormalizers(array(
163-
'options' => $optionsNormalizer,
164-
));
165-
}
166-
167-
/**
168-
* {@inheritdoc}
169-
*/
170-
public function getName()
171-
{
172-
return 'infinite_form_polycollection';
173192
}
174193
}

0 commit comments

Comments
 (0)