Deprecated setDefaultOptions() in favor of configureOptions()

This commit is contained in:
Peter Rehm 2014-12-08 08:03:20 +01:00
parent d752f74161
commit 3d43caef88
46 changed files with 184 additions and 84 deletions

46
UPGRADE-2.7.md Normal file
View File

@ -0,0 +1,46 @@
UPGRADE FROM 2.6 to 2.7
=======================
Form
----
* In form types and extension overriding the "setDefaultOptions" of the
AbstractType or AbstractExtensionType has been deprecated in favor of
overriding the new "configureOptions" method.
The method "setDefaultOptions(OptionsResolverInterface $resolver)" will
be renamed in Symfony 3.0 to "configureOptions(OptionsResolver $resolver)".
Before:
```php
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class TaskType extends AbstractType
{
// ...
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Task',
));
}
}
```
After:
```php
use Symfony\Component\OptionsResolver\OptionsResolver;
class TaskType extends AbstractType
{
// ...
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Task',
));
}
}
```

View File

@ -106,6 +106,11 @@ UPGRADE FROM 2.x to 3.0
### Form ### Form
* The method `AbstractType::setDefaultOptions(OptionsResolverInterface $resolver)` and
`AbstractTypeExtension::setDefaultOptions(OptionsResolverInterface $resolver)` have been
renamed. You should use `AbstractType::configureOptions(OptionsResolver $resolver)` and
`AbstractTypeExtension::configureOptions(OptionsResolver $resolver)` instead.
* The methods `Form::bind()` and `Form::isBound()` were removed. You should * The methods `Form::bind()` and `Form::isBound()` were removed. You should
use `Form::submit()` and `Form::isSubmitted()` instead. use `Form::submit()` and `Form::isSubmitted()` instead.

View File

@ -21,7 +21,7 @@ use Symfony\Bridge\Doctrine\Form\EventListener\MergeDoctrineCollectionListener;
use Symfony\Bridge\Doctrine\Form\DataTransformer\CollectionToArrayTransformer; use Symfony\Bridge\Doctrine\Form\DataTransformer\CollectionToArrayTransformer;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
@ -58,7 +58,7 @@ abstract class DoctrineType extends AbstractType
} }
} }
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$choiceListCache = & $this->choiceListCache; $choiceListCache = & $this->choiceListCache;
$registry = $this->registry; $registry = $this->registry;

View File

@ -22,7 +22,7 @@
"require-dev": { "require-dev": {
"symfony/stopwatch": "~2.2|~3.0.0", "symfony/stopwatch": "~2.2|~3.0.0",
"symfony/dependency-injection": "~2.2|~3.0.0", "symfony/dependency-injection": "~2.2|~3.0.0",
"symfony/form": "~2.3,>=2.3.8|~3.0.0", "symfony/form": "~2.7|~3.0.0",
"symfony/http-kernel": "~2.2|~3.0.0", "symfony/http-kernel": "~2.2|~3.0.0",
"symfony/property-access": "~2.3|~3.0.0", "symfony/property-access": "~2.3|~3.0.0",
"symfony/security": "~2.2|~3.0.0", "symfony/security": "~2.2|~3.0.0",

View File

@ -16,7 +16,7 @@ use Symfony\Bridge\Propel1\Form\DataTransformer\CollectionToArrayTransformer;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
@ -78,7 +78,7 @@ class ModelType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$propertyAccessor = $this->propertyAccessor; $propertyAccessor = $this->propertyAccessor;

View File

@ -14,7 +14,7 @@ namespace Symfony\Bridge\Propel1\Form\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\Exception\MissingOptionsException; use Symfony\Component\OptionsResolver\Exception\MissingOptionsException;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Propel1\Form\EventListener\TranslationCollectionFormListener; use Symfony\Bridge\Propel1\Form\EventListener\TranslationCollectionFormListener;
/** /**
@ -59,7 +59,7 @@ class TranslationCollectionType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setRequired(array( $resolver->setRequired(array(
'languages', 'languages',

View File

@ -13,7 +13,7 @@ namespace Symfony\Bridge\Propel1\Form\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Propel1\Form\EventListener\TranslationFormListener; use Symfony\Bridge\Propel1\Form\EventListener\TranslationFormListener;
/** /**
@ -44,7 +44,7 @@ class TranslationType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setRequired(array( $resolver->setRequired(array(
'data_class', 'data_class',

View File

@ -19,7 +19,7 @@
"php": ">=5.3.9", "php": ">=5.3.9",
"symfony/http-foundation": "~2.0,>=2.0.5|~3.0.0", "symfony/http-foundation": "~2.0,>=2.0.5|~3.0.0",
"symfony/http-kernel": "~2.0,>=2.0.5|~3.0.0", "symfony/http-kernel": "~2.0,>=2.0.5|~3.0.0",
"symfony/form": "~2.3,>=2.3.8|~3.0.0", "symfony/form": "~2.7|~3.0.0",
"symfony/property-access": "~2.3|~3.0.0", "symfony/property-access": "~2.3|~3.0.0",
"propel/propel1": "~1.6,>=1.6.5" "propel/propel1": "~1.6,>=1.6.5"
}, },

View File

@ -17,7 +17,7 @@ use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvent;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
/** /**
@ -77,7 +77,7 @@ class UserLoginFormType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
/* Note: the form's intention must correspond to that for the form login /* Note: the form's intention must correspond to that for the form login
* listener in order for the CSRF token to validate successfully. * listener in order for the CSRF token to validate successfully.

View File

@ -11,6 +11,7 @@
namespace Symfony\Component\Form; namespace Symfony\Component\Form;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface;
/** /**
@ -43,6 +44,16 @@ abstract class AbstractType implements FormTypeInterface
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$this->configureOptions($resolver);
}
/**
* Configures the options for this type.
*
* @param OptionsResolver $resolver The resolver for the options.
*/
public function configureOptions(OptionsResolver $resolver)
{ {
} }

View File

@ -11,6 +11,7 @@
namespace Symfony\Component\Form; namespace Symfony\Component\Form;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface;
/** /**
@ -43,6 +44,16 @@ abstract class AbstractTypeExtension implements FormTypeExtensionInterface
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$this->configureOptions($resolver);
}
/**
* Configures the options for this type.
*
* @param OptionsResolver $resolver The resolver for the options.
*/
public function configureOptions(OptionsResolver $resolver)
{ {
} }
} }

View File

@ -1,6 +1,12 @@
CHANGELOG CHANGELOG
========= =========
2.7.0
-----
* deprecated the overwriting of AbstractType::setDefaultOptions() in favor of overwriting AbstractType::configureOptions().
* deprecated the overwriting of AbstractTypeExtension::setDefaultOptions() in favor of overwriting AbstractTypeExtension::configureOptions().
2.6.2 2.6.2
----- -----

View File

@ -15,7 +15,7 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
/** /**
* Encapsulates common logic of {@link FormType} and {@link ButtonType}. * Encapsulates common logic of {@link FormType} and {@link ButtonType}.
@ -111,7 +111,7 @@ abstract class BaseType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'block_name' => null, 'block_name' => null,

View File

@ -12,14 +12,14 @@
namespace Symfony\Component\Form\Extension\Core\Type; namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class BirthdayType extends AbstractType class BirthdayType extends AbstractType
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'years' => range(date('Y') - 120, date('Y')), 'years' => range(date('Y') - 120, date('Y')),

View File

@ -12,7 +12,7 @@
namespace Symfony\Component\Form\Extension\Core\Type; namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\ButtonTypeInterface; use Symfony\Component\Form\ButtonTypeInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
/** /**
* A form button. * A form button.
@ -39,9 +39,9 @@ class ButtonType extends BaseType implements ButtonTypeInterface
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
parent::setDefaultOptions($resolver); parent::configureOptions($resolver);
$resolver->setDefaults(array( $resolver->setDefaults(array(
'auto_initialize' => false, 'auto_initialize' => false,

View File

@ -16,7 +16,7 @@ use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\Extension\Core\DataTransformer\BooleanToStringTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\BooleanToStringTransformer;
use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class CheckboxType extends AbstractType class CheckboxType extends AbstractType
{ {
@ -49,7 +49,7 @@ class CheckboxType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$emptyData = function (FormInterface $form, $viewData) { $emptyData = function (FormInterface $form, $viewData) {
return $viewData; return $viewData;

View File

@ -26,7 +26,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\ChoiceToBooleanArrayTr
use Symfony\Component\Form\Extension\Core\DataTransformer\ChoicesToValuesTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\ChoicesToValuesTransformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\ChoicesToBooleanArrayTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\ChoicesToBooleanArrayTransformer;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class ChoiceType extends AbstractType class ChoiceType extends AbstractType
{ {
@ -161,7 +161,7 @@ class ChoiceType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$choiceListCache = & $this->choiceListCache; $choiceListCache = & $this->choiceListCache;

View File

@ -17,7 +17,7 @@ use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\Extension\Core\EventListener\ResizeFormListener; use Symfony\Component\Form\Extension\Core\EventListener\ResizeFormListener;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class CollectionType extends AbstractType class CollectionType extends AbstractType
{ {
@ -72,7 +72,7 @@ class CollectionType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$optionsNormalizer = function (Options $options, $value) { $optionsNormalizer = function (Options $options, $value) {
$value['block_name'] = 'entry'; $value['block_name'] = 'entry';

View File

@ -13,14 +13,14 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Intl\Intl; use Symfony\Component\Intl\Intl;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class CountryType extends AbstractType class CountryType extends AbstractType
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'choices' => Intl::getRegionBundle()->getCountryNames(), 'choices' => Intl::getRegionBundle()->getCountryNames(),

View File

@ -13,14 +13,14 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Intl\Intl; use Symfony\Component\Intl\Intl;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class CurrencyType extends AbstractType class CurrencyType extends AbstractType
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'choices' => Intl::getCurrencyBundle()->getCurrencyNames(), 'choices' => Intl::getCurrencyBundle()->getCurrencyNames(),

View File

@ -25,7 +25,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTra
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToRfc3339Transformer; use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToRfc3339Transformer;
use Symfony\Component\Form\Extension\Core\DataTransformer\ArrayToPartsTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\ArrayToPartsTransformer;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class DateTimeType extends AbstractType class DateTimeType extends AbstractType
{ {
@ -200,7 +200,7 @@ class DateTimeType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$compound = function (Options $options) { $compound = function (Options $options) {
return $options['widget'] !== 'single_text'; return $options['widget'] !== 'single_text';

View File

@ -21,7 +21,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransf
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer;
use Symfony\Component\Form\ReversedTransformer; use Symfony\Component\Form\ReversedTransformer;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException;
class DateType extends AbstractType class DateType extends AbstractType
@ -165,7 +165,7 @@ class DateType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$compound = function (Options $options) { $compound = function (Options $options) {
return $options['widget'] !== 'single_text'; return $options['widget'] !== 'single_text';

View File

@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class FileType extends AbstractType class FileType extends AbstractType
{ {
@ -47,7 +47,7 @@ class FileType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'compound' => false, 'compound' => false,

View File

@ -18,7 +18,7 @@ use Symfony\Component\Form\Extension\Core\EventListener\TrimListener;
use Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper; use Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper;
use Symfony\Component\Form\Exception\LogicException; use Symfony\Component\Form\Exception\LogicException;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessorInterface; use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
@ -122,9 +122,9 @@ class FormType extends BaseType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
parent::setDefaultOptions($resolver); parent::configureOptions($resolver);
// Derive "data_class" option from passed "data" object // Derive "data_class" option from passed "data" object
$dataClass = function (Options $options) { $dataClass = function (Options $options) {

View File

@ -12,14 +12,14 @@
namespace Symfony\Component\Form\Extension\Core\Type; namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class HiddenType extends AbstractType class HiddenType extends AbstractType
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
// hidden fields cannot have a required attribute // hidden fields cannot have a required attribute

View File

@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\DataTransformer\IntegerToLocalizedStringTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\IntegerToLocalizedStringTransformer;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class IntegerType extends AbstractType class IntegerType extends AbstractType
{ {
@ -34,7 +34,7 @@ class IntegerType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
// default precision is locale specific (usually around 3) // default precision is locale specific (usually around 3)

View File

@ -13,14 +13,14 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Intl\Intl; use Symfony\Component\Intl\Intl;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class LanguageType extends AbstractType class LanguageType extends AbstractType
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'choices' => Intl::getLanguageBundle()->getLanguageNames(), 'choices' => Intl::getLanguageBundle()->getLanguageNames(),

View File

@ -13,14 +13,14 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Intl\Intl; use Symfony\Component\Intl\Intl;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class LocaleType extends AbstractType class LocaleType extends AbstractType
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'choices' => Intl::getLocaleBundle()->getLocaleNames(), 'choices' => Intl::getLocaleBundle()->getLocaleNames(),

View File

@ -16,7 +16,7 @@ use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\DataTransformer\MoneyToLocalizedStringTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\MoneyToLocalizedStringTransformer;
use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class MoneyType extends AbstractType class MoneyType extends AbstractType
{ {
@ -48,7 +48,7 @@ class MoneyType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'precision' => 2, 'precision' => 2,

View File

@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class NumberType extends AbstractType class NumberType extends AbstractType
{ {
@ -33,7 +33,7 @@ class NumberType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
// default precision is locale specific (usually around 3) // default precision is locale specific (usually around 3)

View File

@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class PasswordType extends AbstractType class PasswordType extends AbstractType
{ {
@ -31,7 +31,7 @@ class PasswordType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'always_empty' => true, 'always_empty' => true,

View File

@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\DataTransformer\PercentToLocalizedStringTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\PercentToLocalizedStringTransformer;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class PercentType extends AbstractType class PercentType extends AbstractType
{ {
@ -29,7 +29,7 @@ class PercentType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'precision' => 0, 'precision' => 0,

View File

@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\DataTransformer\ValueToDuplicatesTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\ValueToDuplicatesTransformer;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class RepeatedType extends AbstractType class RepeatedType extends AbstractType
{ {
@ -44,7 +44,7 @@ class RepeatedType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'type' => 'text', 'type' => 'text',

View File

@ -12,14 +12,14 @@
namespace Symfony\Component\Form\Extension\Core\Type; namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class TextType extends AbstractType class TextType extends AbstractType
{ {
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'compound' => false, 'compound' => false,

View File

@ -21,7 +21,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTra
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer;
use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class TimeType extends AbstractType class TimeType extends AbstractType
{ {
@ -157,7 +157,7 @@ class TimeType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$compound = function (Options $options) { $compound = function (Options $options) {
return $options['widget'] !== 'single_text'; return $options['widget'] !== 'single_text';

View File

@ -12,7 +12,7 @@
namespace Symfony\Component\Form\Extension\Core\Type; namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class TimezoneType extends AbstractType class TimezoneType extends AbstractType
{ {
@ -26,7 +26,7 @@ class TimezoneType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'choices' => self::getTimezones(), 'choices' => self::getTimezones(),

View File

@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener; use Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class UrlType extends AbstractType class UrlType extends AbstractType
{ {
@ -31,7 +31,7 @@ class UrlType extends AbstractType
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'default_protocol' => 'http', 'default_protocol' => 'http',

View File

@ -21,7 +21,7 @@ use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormInterface;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
use Symfony\Component\Translation\TranslatorInterface; use Symfony\Component\Translation\TranslatorInterface;
@ -119,7 +119,7 @@ class FormTypeCsrfExtension extends AbstractTypeExtension
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
// BC clause for the "intention" option // BC clause for the "intention" option
$csrfTokenId = function (Options $options) { $csrfTokenId = function (Options $options) {

View File

@ -13,7 +13,7 @@ namespace Symfony\Component\Form\Extension\Validator\Type;
use Symfony\Component\Form\AbstractTypeExtension; use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
/** /**
* Encapsulates common logic of {@link FormTypeValidatorExtension} and * Encapsulates common logic of {@link FormTypeValidatorExtension} and
@ -26,7 +26,7 @@ abstract class BaseValidatorExtension extends AbstractTypeExtension
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
// Make sure that validation groups end up as null, closure or array // Make sure that validation groups end up as null, closure or array
$validationGroupsNormalizer = function (Options $options, $groups) { $validationGroupsNormalizer = function (Options $options, $groups) {

View File

@ -17,7 +17,7 @@ use Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener;
use Symfony\Component\Validator\Validator\ValidatorInterface; use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
/** /**
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
@ -58,9 +58,9 @@ class FormTypeValidatorExtension extends BaseValidatorExtension
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
parent::setDefaultOptions($resolver); parent::configureOptions($resolver);
// Constraint should always be converted to an array // Constraint should always be converted to an array
$constraintsNormalizer = function (Options $options, $constraints) { $constraintsNormalizer = function (Options $options, $constraints) {

View File

@ -13,7 +13,7 @@ namespace Symfony\Component\Form\Extension\Validator\Type;
use Symfony\Component\Form\AbstractTypeExtension; use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
/** /**
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
@ -23,7 +23,7 @@ class RepeatedTypeValidatorExtension extends AbstractTypeExtension
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
// Map errors to the first field // Map errors to the first field
$errorMapping = function (Options $options) { $errorMapping = function (Options $options) {

View File

@ -63,6 +63,10 @@ interface FormTypeExtensionInterface
* Overrides the default options from the extended type. * Overrides the default options from the extended type.
* *
* @param OptionsResolverInterface $resolver The resolver for the options. * @param OptionsResolverInterface $resolver The resolver for the options.
*
* @deprecated Deprecated since Symfony 2.7, to be removed in Symfony 3.0.
* Use the method configureOptions instead. This method will be
* added to the FormTypeExtensionInterface with Symfony 3.0
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver); public function setDefaultOptions(OptionsResolverInterface $resolver);

View File

@ -72,6 +72,10 @@ interface FormTypeInterface
* Sets the default options for this type. * Sets the default options for this type.
* *
* @param OptionsResolverInterface $resolver The resolver for the options. * @param OptionsResolverInterface $resolver The resolver for the options.
*
* @deprecated Deprecated since Symfony 2.7, to be renamed in Symfony 3.0.
* Use the method configureOptions instead. This method will be
* added to the FormTypeInterface with Symfony 3.0.
*/ */
public function setDefaultOptions(OptionsResolverInterface $resolver); public function setDefaultOptions(OptionsResolverInterface $resolver);

View File

@ -205,8 +205,22 @@ class ResolvedFormType implements ResolvedFormTypeInterface
$this->innerType->setDefaultOptions($this->optionsResolver); $this->innerType->setDefaultOptions($this->optionsResolver);
$reflector = new \ReflectionMethod($this->innerType, 'setDefaultOptions');
$isOverwritten = ($reflector->getDeclaringClass()->getName() !== 'Symfony\Component\Form\AbstractType');
if (true === $isOverwritten) {
trigger_error('The FormTypeInterface::setDefaultOptions() method is deprecated since version 2.7 and will be removed in 3.0. Use configureOptions() instead. This method will be added to the FormTypeInterface with Symfony 3.0.', E_USER_DEPRECATED);
}
foreach ($this->typeExtensions as $extension) { foreach ($this->typeExtensions as $extension) {
$extension->setDefaultOptions($this->optionsResolver); $extension->setDefaultOptions($this->optionsResolver);
$reflector = new \ReflectionMethod($extension, 'setDefaultOptions');
$isOverwritten = ($reflector->getDeclaringClass()->getName() !== 'Symfony\Component\Form\AbstractTypeExtension');
if (true === $isOverwritten) {
trigger_error('The FormTypeExtensionInterface::setDefaultOptions() method is deprecated since version 2.7 and will be removed in 3.0. Use configureOptions() instead. This method will be added to the FormTypeExtensionInterface with Symfony 3.0.', E_USER_DEPRECATED);
}
} }
} }

View File

@ -4,7 +4,7 @@ namespace Symfony\Component\Form\Tests\Fixtures;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
class AuthorType extends AbstractType class AuthorType extends AbstractType
{ {
@ -21,7 +21,7 @@ class AuthorType extends AbstractType
return 'author'; return 'author';
} }
public function setDefaultOptions(OptionsResolverInterface $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
'data_class' => 'Symfony\Component\Form\Tests\Fixtures\Author', 'data_class' => 'Symfony\Component\Form\Tests\Fixtures\Author',

View File

@ -12,9 +12,8 @@
namespace Symfony\Component\Form\Tests; namespace Symfony\Component\Form\Tests;
use Symfony\Component\Form\ResolvedFormType; use Symfony\Component\Form\ResolvedFormType;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormBuilder; use Symfony\Component\Form\FormBuilder;
use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\OptionsResolver;
/** /**
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
@ -61,7 +60,7 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase
$i = 0; $i = 0;
$assertIndexAndAddOption = function ($index, $option, $default) use (&$i, $test) { $assertIndexAndAddOption = function ($index, $option, $default) use (&$i, $test) {
return function (OptionsResolverInterface $resolver) use (&$i, $test, $index, $option, $default) { return function (OptionsResolver $resolver) use (&$i, $test, $index, $option, $default) {
/* @var \PHPUnit_Framework_TestCase $test */ /* @var \PHPUnit_Framework_TestCase $test */
$test->assertEquals($index, $i, 'Executed at index '.$index); $test->assertEquals($index, $i, 'Executed at index '.$index);
@ -73,21 +72,21 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase
// First the default options are generated for the super type // First the default options are generated for the super type
$this->parentType->expects($this->once()) $this->parentType->expects($this->once())
->method('setDefaultOptions') ->method('configureOptions')
->will($this->returnCallback($assertIndexAndAddOption(0, 'a', 'a_default'))); ->will($this->returnCallback($assertIndexAndAddOption(0, 'a', 'a_default')));
// The form type itself // The form type itself
$this->type->expects($this->once()) $this->type->expects($this->once())
->method('setDefaultOptions') ->method('configureOptions')
->will($this->returnCallback($assertIndexAndAddOption(1, 'b', 'b_default'))); ->will($this->returnCallback($assertIndexAndAddOption(1, 'b', 'b_default')));
// And its extensions // And its extensions
$this->extension1->expects($this->once()) $this->extension1->expects($this->once())
->method('setDefaultOptions') ->method('configureOptions')
->will($this->returnCallback($assertIndexAndAddOption(2, 'c', 'c_default'))); ->will($this->returnCallback($assertIndexAndAddOption(2, 'c', 'c_default')));
$this->extension2->expects($this->once()) $this->extension2->expects($this->once())
->method('setDefaultOptions') ->method('configureOptions')
->will($this->returnCallback($assertIndexAndAddOption(3, 'd', 'd_default'))); ->will($this->returnCallback($assertIndexAndAddOption(3, 'd', 'd_default')));
$givenOptions = array('a' => 'a_custom', 'c' => 'c_custom'); $givenOptions = array('a' => 'a_custom', 'c' => 'c_custom');
@ -311,7 +310,7 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase
*/ */
private function getMockFormType() private function getMockFormType()
{ {
return $this->getMock('Symfony\Component\Form\FormTypeInterface'); return $this->getMock('Symfony\Component\Form\AbstractType', array('getName', 'configureOptions', 'finishView', 'buildView', 'buildForm'));
} }
/** /**
@ -319,7 +318,7 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase
*/ */
private function getMockFormTypeExtension() private function getMockFormTypeExtension()
{ {
return $this->getMock('Symfony\Component\Form\FormTypeExtensionInterface'); return $this->getMock('Symfony\Component\Form\AbstractTypeExtension', array('getExtendedType', 'configureOptions', 'finishView', 'buildView', 'buildForm'));
} }
/** /**