From 3d43caef88db7226986d43ec98313cb3b5ee600c Mon Sep 17 00:00:00 2001 From: Peter Rehm Date: Mon, 8 Dec 2014 08:03:20 +0100 Subject: [PATCH 1/8] Deprecated setDefaultOptions() in favor of configureOptions() --- UPGRADE-2.7.md | 46 +++++++++++++++++++ UPGRADE-3.0.md | 5 ++ .../Doctrine/Form/Type/DoctrineType.php | 4 +- src/Symfony/Bridge/Doctrine/composer.json | 2 +- .../Bridge/Propel1/Form/Type/ModelType.php | 4 +- .../Form/Type/TranslationCollectionType.php | 4 +- .../Propel1/Form/Type/TranslationType.php | 4 +- src/Symfony/Bridge/Propel1/composer.json | 2 +- .../Form/UserLoginFormType.php | 4 +- src/Symfony/Component/Form/AbstractType.php | 11 +++++ .../Component/Form/AbstractTypeExtension.php | 11 +++++ src/Symfony/Component/Form/CHANGELOG.md | 6 +++ .../Form/Extension/Core/Type/BaseType.php | 4 +- .../Form/Extension/Core/Type/BirthdayType.php | 4 +- .../Form/Extension/Core/Type/ButtonType.php | 6 +-- .../Form/Extension/Core/Type/CheckboxType.php | 4 +- .../Form/Extension/Core/Type/ChoiceType.php | 4 +- .../Extension/Core/Type/CollectionType.php | 4 +- .../Form/Extension/Core/Type/CountryType.php | 4 +- .../Form/Extension/Core/Type/CurrencyType.php | 4 +- .../Form/Extension/Core/Type/DateTimeType.php | 4 +- .../Form/Extension/Core/Type/DateType.php | 4 +- .../Form/Extension/Core/Type/FileType.php | 4 +- .../Form/Extension/Core/Type/FormType.php | 6 +-- .../Form/Extension/Core/Type/HiddenType.php | 4 +- .../Form/Extension/Core/Type/IntegerType.php | 4 +- .../Form/Extension/Core/Type/LanguageType.php | 4 +- .../Form/Extension/Core/Type/LocaleType.php | 4 +- .../Form/Extension/Core/Type/MoneyType.php | 4 +- .../Form/Extension/Core/Type/NumberType.php | 4 +- .../Form/Extension/Core/Type/PasswordType.php | 4 +- .../Form/Extension/Core/Type/PercentType.php | 4 +- .../Form/Extension/Core/Type/RepeatedType.php | 4 +- .../Form/Extension/Core/Type/TextType.php | 4 +- .../Form/Extension/Core/Type/TimeType.php | 4 +- .../Form/Extension/Core/Type/TimezoneType.php | 4 +- .../Form/Extension/Core/Type/UrlType.php | 4 +- .../Csrf/Type/FormTypeCsrfExtension.php | 4 +- .../Validator/Type/BaseValidatorExtension.php | 4 +- .../Type/FormTypeValidatorExtension.php | 6 +-- .../Type/RepeatedTypeValidatorExtension.php | 4 +- .../Form/FormTypeExtensionInterface.php | 4 ++ .../Component/Form/FormTypeInterface.php | 4 ++ .../Component/Form/ResolvedFormType.php | 14 ++++++ .../Form/Tests/Fixtures/AuthorType.php | 4 +- .../Form/Tests/ResolvedFormTypeTest.php | 17 ++++--- 46 files changed, 184 insertions(+), 84 deletions(-) create mode 100644 UPGRADE-2.7.md diff --git a/UPGRADE-2.7.md b/UPGRADE-2.7.md new file mode 100644 index 0000000000..4e4150a835 --- /dev/null +++ b/UPGRADE-2.7.md @@ -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', + )); + } + } + ``` diff --git a/UPGRADE-3.0.md b/UPGRADE-3.0.md index 6b08295a9f..10ba022473 100644 --- a/UPGRADE-3.0.md +++ b/UPGRADE-3.0.md @@ -106,6 +106,11 @@ UPGRADE FROM 2.x to 3.0 ### 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 use `Form::submit()` and `Form::isSubmitted()` instead. diff --git a/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php b/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php index 766d0caad0..a1b8892628 100644 --- a/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php +++ b/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php @@ -21,7 +21,7 @@ use Symfony\Bridge\Doctrine\Form\EventListener\MergeDoctrineCollectionListener; use Symfony\Bridge\Doctrine\Form\DataTransformer\CollectionToArrayTransformer; use Symfony\Component\Form\AbstractType; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\PropertyAccess\PropertyAccess; 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; $registry = $this->registry; diff --git a/src/Symfony/Bridge/Doctrine/composer.json b/src/Symfony/Bridge/Doctrine/composer.json index 93848cd038..78fd037d25 100644 --- a/src/Symfony/Bridge/Doctrine/composer.json +++ b/src/Symfony/Bridge/Doctrine/composer.json @@ -22,7 +22,7 @@ "require-dev": { "symfony/stopwatch": "~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/property-access": "~2.3|~3.0.0", "symfony/security": "~2.2|~3.0.0", diff --git a/src/Symfony/Bridge/Propel1/Form/Type/ModelType.php b/src/Symfony/Bridge/Propel1/Form/Type/ModelType.php index 6e4e4544ec..826660dacf 100644 --- a/src/Symfony/Bridge/Propel1/Form/Type/ModelType.php +++ b/src/Symfony/Bridge/Propel1/Form/Type/ModelType.php @@ -16,7 +16,7 @@ use Symfony\Bridge\Propel1\Form\DataTransformer\CollectionToArrayTransformer; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; @@ -78,7 +78,7 @@ class ModelType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $propertyAccessor = $this->propertyAccessor; diff --git a/src/Symfony/Bridge/Propel1/Form/Type/TranslationCollectionType.php b/src/Symfony/Bridge/Propel1/Form/Type/TranslationCollectionType.php index 8aaa120b55..a19bb45361 100644 --- a/src/Symfony/Bridge/Propel1/Form/Type/TranslationCollectionType.php +++ b/src/Symfony/Bridge/Propel1/Form/Type/TranslationCollectionType.php @@ -14,7 +14,7 @@ namespace Symfony\Bridge\Propel1\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\OptionsResolver\Exception\MissingOptionsException; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Bridge\Propel1\Form\EventListener\TranslationCollectionFormListener; /** @@ -59,7 +59,7 @@ class TranslationCollectionType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setRequired(array( 'languages', diff --git a/src/Symfony/Bridge/Propel1/Form/Type/TranslationType.php b/src/Symfony/Bridge/Propel1/Form/Type/TranslationType.php index 7fed076fe0..9ee82d8d84 100644 --- a/src/Symfony/Bridge/Propel1/Form/Type/TranslationType.php +++ b/src/Symfony/Bridge/Propel1/Form/Type/TranslationType.php @@ -13,7 +13,7 @@ namespace Symfony\Bridge\Propel1\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Bridge\Propel1\Form\EventListener\TranslationFormListener; /** @@ -44,7 +44,7 @@ class TranslationType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setRequired(array( 'data_class', diff --git a/src/Symfony/Bridge/Propel1/composer.json b/src/Symfony/Bridge/Propel1/composer.json index 8d5d233646..6b9b0467af 100644 --- a/src/Symfony/Bridge/Propel1/composer.json +++ b/src/Symfony/Bridge/Propel1/composer.json @@ -19,7 +19,7 @@ "php": ">=5.3.9", "symfony/http-foundation": "~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", "propel/propel1": "~1.6,>=1.6.5" }, diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/CsrfFormLoginBundle/Form/UserLoginFormType.php b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/CsrfFormLoginBundle/Form/UserLoginFormType.php index 89b302cfd2..d76d8fd629 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/CsrfFormLoginBundle/Form/UserLoginFormType.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/CsrfFormLoginBundle/Form/UserLoginFormType.php @@ -17,7 +17,7 @@ use Symfony\Component\Form\FormError; use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormEvent; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Security\Core\Security; /** @@ -77,7 +77,7 @@ class UserLoginFormType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { /* Note: the form's intention must correspond to that for the form login * listener in order for the CSRF token to validate successfully. diff --git a/src/Symfony/Component/Form/AbstractType.php b/src/Symfony/Component/Form/AbstractType.php index 6f7f5da653..08d6915344 100644 --- a/src/Symfony/Component/Form/AbstractType.php +++ b/src/Symfony/Component/Form/AbstractType.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Form; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolverInterface; /** @@ -43,6 +44,16 @@ abstract class AbstractType implements FormTypeInterface * {@inheritdoc} */ 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) { } diff --git a/src/Symfony/Component/Form/AbstractTypeExtension.php b/src/Symfony/Component/Form/AbstractTypeExtension.php index 351c80097f..140fe5fdd6 100644 --- a/src/Symfony/Component/Form/AbstractTypeExtension.php +++ b/src/Symfony/Component/Form/AbstractTypeExtension.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Form; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolverInterface; /** @@ -43,6 +44,16 @@ abstract class AbstractTypeExtension implements FormTypeExtensionInterface * {@inheritdoc} */ 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) { } } diff --git a/src/Symfony/Component/Form/CHANGELOG.md b/src/Symfony/Component/Form/CHANGELOG.md index 4611542054..07c96077c2 100644 --- a/src/Symfony/Component/Form/CHANGELOG.md +++ b/src/Symfony/Component/Form/CHANGELOG.md @@ -1,6 +1,12 @@ 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 ----- diff --git a/src/Symfony/Component/Form/Extension/Core/Type/BaseType.php b/src/Symfony/Component/Form/Extension/Core/Type/BaseType.php index c03b7e88a7..c8610ee9d3 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/BaseType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/BaseType.php @@ -15,7 +15,7 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; /** * Encapsulates common logic of {@link FormType} and {@link ButtonType}. @@ -111,7 +111,7 @@ abstract class BaseType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'block_name' => null, diff --git a/src/Symfony/Component/Form/Extension/Core/Type/BirthdayType.php b/src/Symfony/Component/Form/Extension/Core/Type/BirthdayType.php index f90f57d4b6..bc2711d586 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/BirthdayType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/BirthdayType.php @@ -12,14 +12,14 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class BirthdayType extends AbstractType { /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'years' => range(date('Y') - 120, date('Y')), diff --git a/src/Symfony/Component/Form/Extension/Core/Type/ButtonType.php b/src/Symfony/Component/Form/Extension/Core/Type/ButtonType.php index c4b97652cd..7456adc93d 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/ButtonType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/ButtonType.php @@ -12,7 +12,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\ButtonTypeInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; /** * A form button. @@ -39,9 +39,9 @@ class ButtonType extends BaseType implements ButtonTypeInterface /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { - parent::setDefaultOptions($resolver); + parent::configureOptions($resolver); $resolver->setDefaults(array( 'auto_initialize' => false, diff --git a/src/Symfony/Component/Form/Extension/Core/Type/CheckboxType.php b/src/Symfony/Component/Form/Extension/Core/Type/CheckboxType.php index 13c78041d0..53a5e05275 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/CheckboxType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/CheckboxType.php @@ -16,7 +16,7 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\Extension\Core\DataTransformer\BooleanToStringTransformer; use Symfony\Component\Form\FormView; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class CheckboxType extends AbstractType { @@ -49,7 +49,7 @@ class CheckboxType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $emptyData = function (FormInterface $form, $viewData) { return $viewData; diff --git a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php index b705659e97..81b171fe5b 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php @@ -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\ChoicesToBooleanArrayTransformer; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class ChoiceType extends AbstractType { @@ -161,7 +161,7 @@ class ChoiceType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $choiceListCache = & $this->choiceListCache; diff --git a/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php b/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php index 2fed7cea88..ccfec39682 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/CollectionType.php @@ -17,7 +17,7 @@ use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\Extension\Core\EventListener\ResizeFormListener; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class CollectionType extends AbstractType { @@ -72,7 +72,7 @@ class CollectionType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $optionsNormalizer = function (Options $options, $value) { $value['block_name'] = 'entry'; diff --git a/src/Symfony/Component/Form/Extension/Core/Type/CountryType.php b/src/Symfony/Component/Form/Extension/Core/Type/CountryType.php index 3482ba6634..e6231c596b 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/CountryType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/CountryType.php @@ -13,14 +13,14 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Intl\Intl; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class CountryType extends AbstractType { /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'choices' => Intl::getRegionBundle()->getCountryNames(), diff --git a/src/Symfony/Component/Form/Extension/Core/Type/CurrencyType.php b/src/Symfony/Component/Form/Extension/Core/Type/CurrencyType.php index 3a925e3a3d..9d77b76381 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/CurrencyType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/CurrencyType.php @@ -13,14 +13,14 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Intl\Intl; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class CurrencyType extends AbstractType { /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'choices' => Intl::getCurrencyBundle()->getCurrencyNames(), diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php index 252d370080..72e735787b 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php @@ -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\ArrayToPartsTransformer; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class DateTimeType extends AbstractType { @@ -200,7 +200,7 @@ class DateTimeType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $compound = function (Options $options) { return $options['widget'] !== 'single_text'; diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php index dc553ad8dd..48984b61f3 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php @@ -21,7 +21,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransf use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer; use Symfony\Component\Form\ReversedTransformer; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; class DateType extends AbstractType @@ -165,7 +165,7 @@ class DateType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $compound = function (Options $options) { return $options['widget'] !== 'single_text'; diff --git a/src/Symfony/Component/Form/Extension/Core/Type/FileType.php b/src/Symfony/Component/Form/Extension/Core/Type/FileType.php index 0f7bb3c7cd..bc24899de5 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/FileType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/FileType.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class FileType extends AbstractType { @@ -47,7 +47,7 @@ class FileType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'compound' => false, diff --git a/src/Symfony/Component/Form/Extension/Core/Type/FormType.php b/src/Symfony/Component/Form/Extension/Core/Type/FormType.php index a30de1df84..3fcacd50e9 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/FormType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/FormType.php @@ -18,7 +18,7 @@ use Symfony\Component\Form\Extension\Core\EventListener\TrimListener; use Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper; use Symfony\Component\Form\Exception\LogicException; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\PropertyAccess\PropertyAccessorInterface; @@ -122,9 +122,9 @@ class FormType extends BaseType /** * {@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 $dataClass = function (Options $options) { diff --git a/src/Symfony/Component/Form/Extension/Core/Type/HiddenType.php b/src/Symfony/Component/Form/Extension/Core/Type/HiddenType.php index 352b34620c..37b25435e1 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/HiddenType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/HiddenType.php @@ -12,14 +12,14 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class HiddenType extends AbstractType { /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( // hidden fields cannot have a required attribute diff --git a/src/Symfony/Component/Form/Extension/Core/Type/IntegerType.php b/src/Symfony/Component/Form/Extension/Core/Type/IntegerType.php index 575dcb1fbd..b36637ad67 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/IntegerType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/IntegerType.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\DataTransformer\IntegerToLocalizedStringTransformer; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class IntegerType extends AbstractType { @@ -34,7 +34,7 @@ class IntegerType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( // default precision is locale specific (usually around 3) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/LanguageType.php b/src/Symfony/Component/Form/Extension/Core/Type/LanguageType.php index 37b2bf3300..4bd09d26e9 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/LanguageType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/LanguageType.php @@ -13,14 +13,14 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Intl\Intl; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class LanguageType extends AbstractType { /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'choices' => Intl::getLanguageBundle()->getLanguageNames(), diff --git a/src/Symfony/Component/Form/Extension/Core/Type/LocaleType.php b/src/Symfony/Component/Form/Extension/Core/Type/LocaleType.php index 4610c1b459..92a41080e4 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/LocaleType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/LocaleType.php @@ -13,14 +13,14 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Intl\Intl; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class LocaleType extends AbstractType { /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'choices' => Intl::getLocaleBundle()->getLocaleNames(), diff --git a/src/Symfony/Component/Form/Extension/Core/Type/MoneyType.php b/src/Symfony/Component/Form/Extension/Core/Type/MoneyType.php index 9653d6f8ab..781fe7ac65 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/MoneyType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/MoneyType.php @@ -16,7 +16,7 @@ use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\DataTransformer\MoneyToLocalizedStringTransformer; use Symfony\Component\Form\FormView; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class MoneyType extends AbstractType { @@ -48,7 +48,7 @@ class MoneyType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'precision' => 2, diff --git a/src/Symfony/Component/Form/Extension/Core/Type/NumberType.php b/src/Symfony/Component/Form/Extension/Core/Type/NumberType.php index 5b06e88bbe..946c9d44e4 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/NumberType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/NumberType.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class NumberType extends AbstractType { @@ -33,7 +33,7 @@ class NumberType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( // default precision is locale specific (usually around 3) diff --git a/src/Symfony/Component/Form/Extension/Core/Type/PasswordType.php b/src/Symfony/Component/Form/Extension/Core/Type/PasswordType.php index 8f5633c6d1..611eb4d4a3 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/PasswordType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/PasswordType.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class PasswordType extends AbstractType { @@ -31,7 +31,7 @@ class PasswordType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'always_empty' => true, diff --git a/src/Symfony/Component/Form/Extension/Core/Type/PercentType.php b/src/Symfony/Component/Form/Extension/Core/Type/PercentType.php index 079eca0497..51632f031e 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/PercentType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/PercentType.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\DataTransformer\PercentToLocalizedStringTransformer; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class PercentType extends AbstractType { @@ -29,7 +29,7 @@ class PercentType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'precision' => 0, diff --git a/src/Symfony/Component/Form/Extension/Core/Type/RepeatedType.php b/src/Symfony/Component/Form/Extension/Core/Type/RepeatedType.php index 47a3299359..a0d13f7faa 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/RepeatedType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/RepeatedType.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\DataTransformer\ValueToDuplicatesTransformer; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class RepeatedType extends AbstractType { @@ -44,7 +44,7 @@ class RepeatedType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'type' => 'text', diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TextType.php b/src/Symfony/Component/Form/Extension/Core/Type/TextType.php index 11503261c5..4aef1cd6e6 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TextType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TextType.php @@ -12,14 +12,14 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class TextType extends AbstractType { /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'compound' => false, diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php index 4fd2cba56c..851d483f30 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php @@ -21,7 +21,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTra use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer; use Symfony\Component\Form\FormView; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class TimeType extends AbstractType { @@ -157,7 +157,7 @@ class TimeType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $compound = function (Options $options) { return $options['widget'] !== 'single_text'; diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php index 96b1407768..d19fb52fdc 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php @@ -12,7 +12,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class TimezoneType extends AbstractType { @@ -26,7 +26,7 @@ class TimezoneType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'choices' => self::getTimezones(), diff --git a/src/Symfony/Component/Form/Extension/Core/Type/UrlType.php b/src/Symfony/Component/Form/Extension/Core/Type/UrlType.php index 5c414afc93..0deba91086 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/UrlType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/UrlType.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class UrlType extends AbstractType { @@ -31,7 +31,7 @@ class UrlType extends AbstractType /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'default_protocol' => 'http', diff --git a/src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php b/src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php index b693894159..35d8648215 100644 --- a/src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php +++ b/src/Symfony/Component/Form/Extension/Csrf/Type/FormTypeCsrfExtension.php @@ -21,7 +21,7 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormInterface; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Symfony\Component\Translation\TranslatorInterface; @@ -119,7 +119,7 @@ class FormTypeCsrfExtension extends AbstractTypeExtension /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { // BC clause for the "intention" option $csrfTokenId = function (Options $options) { diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/BaseValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/BaseValidatorExtension.php index f5bc00daa6..ada55dce27 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/BaseValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/BaseValidatorExtension.php @@ -13,7 +13,7 @@ namespace Symfony\Component\Form\Extension\Validator\Type; use Symfony\Component\Form\AbstractTypeExtension; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; /** * Encapsulates common logic of {@link FormTypeValidatorExtension} and @@ -26,7 +26,7 @@ abstract class BaseValidatorExtension extends AbstractTypeExtension /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { // Make sure that validation groups end up as null, closure or array $validationGroupsNormalizer = function (Options $options, $groups) { diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php index 89238be707..e5d57df166 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php @@ -17,7 +17,7 @@ use Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener; use Symfony\Component\Validator\Validator\ValidatorInterface; use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; /** * @author Bernhard Schussek @@ -58,9 +58,9 @@ class FormTypeValidatorExtension extends BaseValidatorExtension /** * {@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 $constraintsNormalizer = function (Options $options, $constraints) { diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/RepeatedTypeValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/RepeatedTypeValidatorExtension.php index 858ff0fae1..3eacceae63 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/RepeatedTypeValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/RepeatedTypeValidatorExtension.php @@ -13,7 +13,7 @@ namespace Symfony\Component\Form\Extension\Validator\Type; use Symfony\Component\Form\AbstractTypeExtension; use Symfony\Component\OptionsResolver\Options; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; /** * @author Bernhard Schussek @@ -23,7 +23,7 @@ class RepeatedTypeValidatorExtension extends AbstractTypeExtension /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { // Map errors to the first field $errorMapping = function (Options $options) { diff --git a/src/Symfony/Component/Form/FormTypeExtensionInterface.php b/src/Symfony/Component/Form/FormTypeExtensionInterface.php index 946c7a74b3..220eb6f4b0 100644 --- a/src/Symfony/Component/Form/FormTypeExtensionInterface.php +++ b/src/Symfony/Component/Form/FormTypeExtensionInterface.php @@ -63,6 +63,10 @@ interface FormTypeExtensionInterface * Overrides the default options from the extended type. * * @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); diff --git a/src/Symfony/Component/Form/FormTypeInterface.php b/src/Symfony/Component/Form/FormTypeInterface.php index 78f8bd0083..fc0bb046cb 100644 --- a/src/Symfony/Component/Form/FormTypeInterface.php +++ b/src/Symfony/Component/Form/FormTypeInterface.php @@ -72,6 +72,10 @@ interface FormTypeInterface * Sets the default options for this type. * * @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); diff --git a/src/Symfony/Component/Form/ResolvedFormType.php b/src/Symfony/Component/Form/ResolvedFormType.php index 065189a42c..e3c897a981 100644 --- a/src/Symfony/Component/Form/ResolvedFormType.php +++ b/src/Symfony/Component/Form/ResolvedFormType.php @@ -205,8 +205,22 @@ class ResolvedFormType implements ResolvedFormTypeInterface $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) { $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); + } } } diff --git a/src/Symfony/Component/Form/Tests/Fixtures/AuthorType.php b/src/Symfony/Component/Form/Tests/Fixtures/AuthorType.php index 147f6e4867..62c80cbb37 100644 --- a/src/Symfony/Component/Form/Tests/Fixtures/AuthorType.php +++ b/src/Symfony/Component/Form/Tests/Fixtures/AuthorType.php @@ -4,7 +4,7 @@ namespace Symfony\Component\Form\Tests\Fixtures; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class AuthorType extends AbstractType { @@ -21,7 +21,7 @@ class AuthorType extends AbstractType return 'author'; } - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'Symfony\Component\Form\Tests\Fixtures\Author', diff --git a/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php b/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php index 2f3fe61020..234d52cf39 100644 --- a/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php +++ b/src/Symfony/Component/Form/Tests/ResolvedFormTypeTest.php @@ -12,9 +12,8 @@ namespace Symfony\Component\Form\Tests; use Symfony\Component\Form\ResolvedFormType; -use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormBuilder; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; /** * @author Bernhard Schussek @@ -61,7 +60,7 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase $i = 0; $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 */ $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 $this->parentType->expects($this->once()) - ->method('setDefaultOptions') + ->method('configureOptions') ->will($this->returnCallback($assertIndexAndAddOption(0, 'a', 'a_default'))); // The form type itself $this->type->expects($this->once()) - ->method('setDefaultOptions') + ->method('configureOptions') ->will($this->returnCallback($assertIndexAndAddOption(1, 'b', 'b_default'))); // And its extensions $this->extension1->expects($this->once()) - ->method('setDefaultOptions') + ->method('configureOptions') ->will($this->returnCallback($assertIndexAndAddOption(2, 'c', 'c_default'))); $this->extension2->expects($this->once()) - ->method('setDefaultOptions') + ->method('configureOptions') ->will($this->returnCallback($assertIndexAndAddOption(3, 'd', 'd_default'))); $givenOptions = array('a' => 'a_custom', 'c' => 'c_custom'); @@ -311,7 +310,7 @@ class ResolvedFormTypeTest extends \PHPUnit_Framework_TestCase */ 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() { - return $this->getMock('Symfony\Component\Form\FormTypeExtensionInterface'); + return $this->getMock('Symfony\Component\Form\AbstractTypeExtension', array('getExtendedType', 'configureOptions', 'finishView', 'buildView', 'buildForm')); } /** From 505e474dee119bfc5068b1269f1a5d0d3463a194 Mon Sep 17 00:00:00 2001 From: nikita2206 Date: Fri, 12 Dec 2014 18:28:54 +0300 Subject: [PATCH 2/8] [FrameworkBundle] Container parameters in Route#condition --- UPGRADE-2.7.md | 17 +++++++++++++++++ .../Bundle/FrameworkBundle/Routing/Router.php | 1 + .../Tests/Routing/RouterTest.php | 4 +++- .../Bundle/FrameworkBundle/composer.json | 2 +- 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 UPGRADE-2.7.md diff --git a/UPGRADE-2.7.md b/UPGRADE-2.7.md new file mode 100644 index 0000000000..4900510a62 --- /dev/null +++ b/UPGRADE-2.7.md @@ -0,0 +1,17 @@ +UPGRADE FROM 2.6 to 2.7 +======================= + +### Router + + * Route conditions now support container parameters which + can be injected into condition using `%parameter%` notation. + Due to the fact that it works by replacing all parameters + with their corresponding values before passing condition + expression for compilation there can be BC breaks where you + could already have used percentage symbols. Single percentage symbol + usage is not affected in any way. Conflicts may occur where + you might have used `%` as a modulo operator, here's an example: + `foo%bar%2` which would be compiled to `$foo % $bar % 2` in 2.6 + but in 2.7 you would get an error if `bar` parameter + doesn't exist or unexpected result otherwise. + diff --git a/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php b/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php index cee502d404..edfc41c2a7 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php +++ b/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php @@ -95,6 +95,7 @@ class Router extends BaseRouter implements WarmableInterface $route->setPath($this->resolve($route->getPath())); $route->setHost($this->resolve($route->getHost())); + $route->setCondition($this->resolve($route->getCondition())); } } diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php index 0d3dab8488..330e0659ca 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Routing/RouterTest.php @@ -28,16 +28,18 @@ class RouterTest extends \PHPUnit_Framework_TestCase ), array( '_locale' => 'en|es', - ) + ), array(), '', array(), array(), '"%foo%" == "bar"' )); $sc = $this->getServiceContainer($routes); $sc->setParameter('locale', 'es'); + $sc->setParameter('foo', 'bar'); $router = new Router($sc, 'foo'); $this->assertSame('/en', $router->generate('foo', array('_locale' => 'en'))); $this->assertSame('/', $router->generate('foo', array('_locale' => 'es'))); + $this->assertSame('"bar" == "bar"', $router->getRouteCollection()->get('foo')->getCondition()); } public function testDefaultsPlaceholders() diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json index 454f429d80..b22feb2ddc 100644 --- a/src/Symfony/Bundle/FrameworkBundle/composer.json +++ b/src/Symfony/Bundle/FrameworkBundle/composer.json @@ -23,7 +23,7 @@ "symfony/http-foundation": "~2.4.9|~2.5,>=2.5.4", "symfony/http-kernel": "~2.6", "symfony/filesystem": "~2.3", - "symfony/routing": "~2.2", + "symfony/routing": "~2.5", "symfony/security-core": "~2.6", "symfony/security-csrf": "~2.6", "symfony/stopwatch": "~2.3", From f6046ba4f30424932980ec4564e256d7a5e28bbb Mon Sep 17 00:00:00 2001 From: Joshua Thijssen Date: Fri, 9 Jan 2015 11:12:42 +0100 Subject: [PATCH 3/8] [security] Fetching current stored context when not explicitly specified --- .../Resources/config/templating_php.xml | 3 +- .../Templating/Helper/LogoutUrlHelper.php | 47 +++++++++++++++---- .../views/Login/after_login.html.twig | 10 ++++ .../Tests/Functional/FormLoginTest.php | 34 ++++++++++++++ .../app/StandardFormLogin/config.yml | 9 ++++ .../Twig/Extension/LogoutUrlExtension.php | 8 ++-- 6 files changed, 96 insertions(+), 15 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml b/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml index 033cba0ef9..02ffa59582 100644 --- a/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml +++ b/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml @@ -12,8 +12,9 @@ - + + diff --git a/src/Symfony/Bundle/SecurityBundle/Templating/Helper/LogoutUrlHelper.php b/src/Symfony/Bundle/SecurityBundle/Templating/Helper/LogoutUrlHelper.php index 3532c2cb78..8ef5ee7a42 100644 --- a/src/Symfony/Bundle/SecurityBundle/Templating/Helper/LogoutUrlHelper.php +++ b/src/Symfony/Bundle/SecurityBundle/Templating/Helper/LogoutUrlHelper.php @@ -14,7 +14,9 @@ namespace Symfony\Bundle\SecurityBundle\Templating\Helper; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderAdapter; use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface; +use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; use Symfony\Component\Templating\Helper\Helper; @@ -25,20 +27,33 @@ use Symfony\Component\Templating\Helper\Helper; */ class LogoutUrlHelper extends Helper { - private $container; + private $requestStack; private $listeners = array(); private $router; + private $tokenStorage; /** * Constructor. * - * @param ContainerInterface $container A ContainerInterface instance - * @param UrlGeneratorInterface $router A Router instance + * @param ContainerInterface|RequestStack $requestStack A ContainerInterface instance or RequestStack + * @param UrlGeneratorInterface $router The router service + * @param TokenStorageInterface|null $tokenStorage The token storage service + * + * @deprecated Passing a ContainerInterface as a first argument is deprecated since 2.7 and will be removed in 3.0. */ - public function __construct(ContainerInterface $container, UrlGeneratorInterface $router) + public function __construct($requestStack, UrlGeneratorInterface $router, TokenStorageInterface $tokenStorage = null) { - $this->container = $container; + if ($requestStack instanceof ContainerInterface) { + $this->requestStack = $requestStack->get('request_stack'); + trigger_error('The '.__CLASS__.' constructor will require a RequestStack instead of a ContainerInterface instance in 3.0.', E_USER_DEPRECATED); + } elseif ($requestStack instanceof RequestStack) { + $this->requestStack = $requestStack; + } else { + throw new \InvalidArgumentException(sprintf('%s takes either a RequestStack or a ContainerInterface object as its first argument.', __METHOD__)); + } + $this->router = $router; + $this->tokenStorage = $tokenStorage; } /** @@ -64,7 +79,7 @@ class LogoutUrlHelper extends Helper /** * Generates the absolute logout path for the firewall. * - * @param string $key The firewall key + * @param string|null $key The firewall key or null to use the current firewall key * * @return string The logout path */ @@ -76,7 +91,7 @@ class LogoutUrlHelper extends Helper /** * Generates the absolute logout URL for the firewall. * - * @param string $key The firewall key + * @param string|null $key The firewall key or null to use the current firewall key * * @return string The logout URL */ @@ -88,15 +103,27 @@ class LogoutUrlHelper extends Helper /** * Generates the logout URL for the firewall. * - * @param string $key The firewall key + * @param string|null $key The firewall key or null to use the current firewall key * @param bool|string $referenceType The type of reference (one of the constants in UrlGeneratorInterface) * * @return string The logout URL * - * @throws \InvalidArgumentException if no LogoutListener is registered for the key + * @throws \InvalidArgumentException if no LogoutListener is registered for the key or the key could not be found automatically. */ private function generateLogoutUrl($key, $referenceType) { + // Fetch the current provider key from token, if possible + if (null === $key && null !== $this->tokenStorage) { + $token = $this->tokenStorage->getToken(); + if (null !== $token && method_exists($token, 'getProviderKey')) { + $key = $token->getProviderKey(); + } + } + + if (null === $key) { + throw new \InvalidArgumentException('Unable to find the current firewall LogoutListener, please provide the provider key manually.'); + } + if (!array_key_exists($key, $this->listeners)) { throw new \InvalidArgumentException(sprintf('No LogoutListener found for firewall key "%s".', $key)); } @@ -106,7 +133,7 @@ class LogoutUrlHelper extends Helper $parameters = null !== $csrfTokenManager ? array($csrfParameter => (string) $csrfTokenManager->getToken($csrfTokenId)) : array(); if ('/' === $logoutPath[0]) { - $request = $this->container->get('request_stack')->getCurrentRequest(); + $request = $this->requestStack->getCurrentRequest(); $url = UrlGeneratorInterface::ABSOLUTE_URL === $referenceType ? $request->getUriForPath($logoutPath) : $request->getBasePath().$logoutPath; diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/FormLoginBundle/Resources/views/Login/after_login.html.twig b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/FormLoginBundle/Resources/views/Login/after_login.html.twig index 9972b48ae7..3ef1f9c7bd 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/FormLoginBundle/Resources/views/Login/after_login.html.twig +++ b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/Bundle/FormLoginBundle/Resources/views/Login/after_login.html.twig @@ -3,4 +3,14 @@ {% block body %} Hello {{ app.user.username }}!

You're browsing to path "{{ app.request.pathInfo }}". + + Log out. + Log out. + + Log out. + Log out. + + Log out. + Log out. + {% endblock %} diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/FormLoginTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/FormLoginTest.php index 0dc038e1df..6119b45803 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/FormLoginTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/FormLoginTest.php @@ -36,6 +36,40 @@ class FormLoginTest extends WebTestCase $this->assertContains('You\'re browsing to path "/profile".', $text); } + /** + * @dataProvider getConfigs + */ + public function testFormLogout($config) + { + $client = $this->createClient(array('test_case' => 'StandardFormLogin', 'root_config' => $config)); + $client->insulate(); + + $form = $client->request('GET', '/login')->selectButton('login')->form(); + $form['_username'] = 'johannes'; + $form['_password'] = 'test'; + $client->submit($form); + + $this->assertRedirect($client->getResponse(), '/profile'); + + $crawler = $client->followRedirect(); + $text = $crawler->text(); + + $this->assertContains('Hello johannes!', $text); + $this->assertContains('You\'re browsing to path "/profile".', $text); + + $logoutLinks = $crawler->selectLink('Log out')->links(); + $this->assertCount(6, $logoutLinks); + $this->assertSame($logoutLinks[0]->getUri(), $logoutLinks[1]->getUri()); + $this->assertSame($logoutLinks[2]->getUri(), $logoutLinks[3]->getUri()); + $this->assertSame($logoutLinks[4]->getUri(), $logoutLinks[5]->getUri()); + + $this->assertNotSame($logoutLinks[0]->getUri(), $logoutLinks[2]->getUri()); + $this->assertNotSame($logoutLinks[1]->getUri(), $logoutLinks[3]->getUri()); + + $this->assertSame($logoutLinks[0]->getUri(), $logoutLinks[4]->getUri()); + $this->assertSame($logoutLinks[1]->getUri(), $logoutLinks[5]->getUri()); + } + /** * @dataProvider getConfigs */ diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/app/StandardFormLogin/config.yml b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/app/StandardFormLogin/config.yml index 624637b0c8..19b9d8952e 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/app/StandardFormLogin/config.yml +++ b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/app/StandardFormLogin/config.yml @@ -23,8 +23,17 @@ security: form_login: check_path: /login_check default_target_path: /profile + logout: ~ anonymous: ~ + # This firewall is here just to check its the logout functionality + second_area: + http_basic: ~ + anonymous: ~ + logout: + target: /second/target + path: /second/logout + access_control: - { path: ^/unprotected_resource$, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/secure-but-not-covered-by-access-control$, roles: IS_AUTHENTICATED_ANONYMOUSLY } diff --git a/src/Symfony/Bundle/SecurityBundle/Twig/Extension/LogoutUrlExtension.php b/src/Symfony/Bundle/SecurityBundle/Twig/Extension/LogoutUrlExtension.php index 8d28b3f246..3473f97cad 100644 --- a/src/Symfony/Bundle/SecurityBundle/Twig/Extension/LogoutUrlExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/Twig/Extension/LogoutUrlExtension.php @@ -41,11 +41,11 @@ class LogoutUrlExtension extends \Twig_Extension /** * Generates the relative logout URL for the firewall. * - * @param string $key The firewall key + * @param string|null $key The firewall key or null to use the current firewall key * * @return string The relative logout URL */ - public function getLogoutPath($key) + public function getLogoutPath($key = null) { return $this->helper->getLogoutPath($key); } @@ -53,11 +53,11 @@ class LogoutUrlExtension extends \Twig_Extension /** * Generates the absolute logout URL for the firewall. * - * @param string $key The firewall key + * @param string|null $key The firewall key or null to use the current firewall key * * @return string The absolute logout URL */ - public function getLogoutUrl($key) + public function getLogoutUrl($key = null) { return $this->helper->getLogoutUrl($key); } From 55cc507670444a2efb846bd42e22ef454beb7307 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 19 Jan 2015 17:36:50 +0100 Subject: [PATCH 4/8] removed usage of the deprecated EsiListener class in core --- src/Symfony/Bundle/FrameworkBundle/Resources/config/esi.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/esi.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/esi.xml index 3038f40e97..277054442f 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/esi.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/esi.xml @@ -6,7 +6,7 @@ Symfony\Component\HttpKernel\HttpCache\Esi - Symfony\Component\HttpKernel\EventListener\EsiListener + Symfony\Component\HttpKernel\EventListener\SurrogateListener From 1067cc58150d746569bd31f99946940fb4644971 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 19 Jan 2015 23:27:25 +0100 Subject: [PATCH 5/8] Revert "minor #13434 fixed some deprecated notices (fabpot)" This reverts commit 564ae34dd7643ecd2773124c34247e0d00e94c4f, reversing changes made to df76faaa39e807781518fd6a7d1e2457b6bcb902. --- .../DependencyInjection/Compiler/ExtensionPass.php | 5 ----- src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml | 1 + 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php b/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php index 7ae9e78e54..b325836281 100644 --- a/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php +++ b/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php @@ -13,7 +13,6 @@ namespace Symfony\Bundle\TwigBundle\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Reference; /** @@ -64,10 +63,6 @@ class ExtensionPass implements CompilerPassInterface $container->getDefinition('twig.extension.code')->replaceArgument(0, $container->getParameter('templating.helper.code.file_link_format')); } - if (!$container->has('security.token_storage')) { - $container->getDefinition('twig.app_variable')->addMethodCall('setSecurity', array(new Reference('security.context', ContainerInterface::IGNORE_ON_INVALID_REFERENCE))); - } - if ($container->has('templating')) { $container->getDefinition('twig.cache_warmer')->addTag('kernel.cache_warmer'); diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml index 3f82a3a095..2d46cdb5aa 100644 --- a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml +++ b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml @@ -41,6 +41,7 @@ %kernel.environment% %kernel.debug% + From 2606a6d80e77df87cccde521daf61d0b44011fc9 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 20 Jan 2015 01:28:23 +0100 Subject: [PATCH 6/8] [Validator] fixed deprecation notice for ElementMetadata --- .../Component/Validator/Mapping/ElementMetadata.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Validator/Mapping/ElementMetadata.php b/src/Symfony/Component/Validator/Mapping/ElementMetadata.php index d036dcf2f1..6886a8993d 100644 --- a/src/Symfony/Component/Validator/Mapping/ElementMetadata.php +++ b/src/Symfony/Component/Validator/Mapping/ElementMetadata.php @@ -11,8 +11,6 @@ namespace Symfony\Component\Validator\Mapping; -trigger_error('The '.__NAMESPACE__.'\ElementMetadata class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Validator\Mapping\GenericMetadata class instead.', E_USER_DEPRECATED); - /** * Contains the metadata of a structural element. * @@ -23,4 +21,10 @@ trigger_error('The '.__NAMESPACE__.'\ElementMetadata class is deprecated since v */ abstract class ElementMetadata extends GenericMetadata { + public function __construct() + { + if (__CLASS__ === get_class($this) || !in_array(get_parent_class($this), array('Symfony\Component\Validator\Mapping\MemberMetadata', 'Symfony\Component\Validator\Mapping\ClassMetadata'))) { + trigger_error('The '.__CLASS__.' class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Validator\Mapping\GenericMetadata class instead.', E_USER_DEPRECATED); + } + } } From 09ed9b5495ba4d159e8f14ec46972f05561a3325 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 19 Jan 2015 23:54:06 +0100 Subject: [PATCH 7/8] removed deprecated notices when using the security service --- src/Symfony/Bridge/Twig/AppVariable.php | 12 ++++++------ .../Bundle/TwigBundle/Resources/config/twig.xml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Symfony/Bridge/Twig/AppVariable.php b/src/Symfony/Bridge/Twig/AppVariable.php index 6851214b31..3c47570f7d 100644 --- a/src/Symfony/Bridge/Twig/AppVariable.php +++ b/src/Symfony/Bridge/Twig/AppVariable.php @@ -16,7 +16,7 @@ use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Exposes some Symfony parameters and services as an "app" global variable. @@ -25,7 +25,7 @@ use Symfony\Component\Security\Core\SecurityContextInterface; */ class AppVariable { - private $security; + private $container; private $tokenStorage; private $requestStack; private $environment; @@ -34,9 +34,9 @@ class AppVariable /** * @deprecated since version 2.7, to be removed in 3.0. */ - public function setSecurity(SecurityContextInterface $security) + public function setContainer(ContainerInterface $container) { - $this->security = $security; + $this->container = $container; } public function setTokenStorage(TokenStorageInterface $tokenStorage) @@ -70,11 +70,11 @@ class AppVariable { trigger_error('The "app.security" variable is deprecated since version 2.6 and will be removed in 3.0.', E_USER_DEPRECATED); - if (null === $this->security) { + if (null === $this->container) { throw new \RuntimeException('The "app.security" variable is not available.'); } - return $this->security; + return $this->container->get('security'); } /** diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml index 2d46cdb5aa..2a11e3750d 100644 --- a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml +++ b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml @@ -41,7 +41,7 @@ %kernel.environment% %kernel.debug% - + From 19be8b0e54322c2c9bd85683ad4251ea2f8e1a81 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 20 Jan 2015 01:45:42 +0100 Subject: [PATCH 8/8] removed deprecation notice for internal constant --- .../Mapping/Deprecated/TraversalStrategy.php | 27 ------------------- .../Validator/Mapping/TraversalStrategy.php | 4 +-- 2 files changed, 1 insertion(+), 30 deletions(-) delete mode 100644 src/Symfony/Component/Validator/Mapping/Deprecated/TraversalStrategy.php diff --git a/src/Symfony/Component/Validator/Mapping/Deprecated/TraversalStrategy.php b/src/Symfony/Component/Validator/Mapping/Deprecated/TraversalStrategy.php deleted file mode 100644 index 28921e0b0b..0000000000 --- a/src/Symfony/Component/Validator/Mapping/Deprecated/TraversalStrategy.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Validator\Mapping\Deprecated; - -trigger_error('Constants STOP_RECURSION in class Symfony\Component\Validator\Mapping\TraversalStrategy is deprecated since version 2.3 and will be removed in 3.0.', E_USER_DEPRECATED); - -/** - * @deprecated since version 2.7, to be removed in 3.0. - * @internal - */ -final class TraversalStrategy -{ - const STOP_RECURSION = 8; - - private function __construct() - { - } -} diff --git a/src/Symfony/Component/Validator/Mapping/TraversalStrategy.php b/src/Symfony/Component/Validator/Mapping/TraversalStrategy.php index f8e646ffc4..450a3ecc0a 100644 --- a/src/Symfony/Component/Validator/Mapping/TraversalStrategy.php +++ b/src/Symfony/Component/Validator/Mapping/TraversalStrategy.php @@ -11,8 +11,6 @@ namespace Symfony\Component\Validator\Mapping; -use Symfony\Component\Validator\Mapping\Deprecated\TraversalStrategy as Deprecated; - /** * Specifies whether and how a traversable object should be traversed. * @@ -57,7 +55,7 @@ class TraversalStrategy * * @internal */ - const STOP_RECURSION = Deprecated::STOP_RECURSION; + const STOP_RECURSION = 8; /** * Not instantiable.