From 40413aad247f70702201b5ff1552305ddb0966c7 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Sun, 23 Sep 2018 21:17:20 +0200 Subject: [PATCH] deprecate the unused scale option --- UPGRADE-4.2.md | 2 ++ UPGRADE-5.0.md | 5 +++ src/Symfony/Component/Form/CHANGELOG.md | 1 + .../Form/Extension/Core/Type/IntegerType.php | 6 ++-- .../Form/Tests/Command/DebugCommandTest.php | 33 +++++++++++++++++-- 5 files changed, 42 insertions(+), 5 deletions(-) diff --git a/UPGRADE-4.2.md b/UPGRADE-4.2.md index e7382e4b3d613..88b152f4e56ca 100644 --- a/UPGRADE-4.2.md +++ b/UPGRADE-4.2.md @@ -55,6 +55,8 @@ Finder Form ---- + * The `scale` option of the `IntegerType` is deprecated. + * Deprecated calling `FormRenderer::searchAndRenderBlock` for fields which were already rendered. Instead of expecting such calls to return empty strings, check if the field has already been rendered. diff --git a/UPGRADE-5.0.md b/UPGRADE-5.0.md index 49ec7e39a8b93..0b65a195ba61e 100644 --- a/UPGRADE-5.0.md +++ b/UPGRADE-5.0.md @@ -69,6 +69,11 @@ Finder * The `Finder::sortByName()` method has a new `$useNaturalSort` argument. +Form +---- + + * The `scale` option was removed from the `IntegerType`. + FrameworkBundle --------------- diff --git a/src/Symfony/Component/Form/CHANGELOG.md b/src/Symfony/Component/Form/CHANGELOG.md index 1f59b5398aab3..8cc9701d260f7 100644 --- a/src/Symfony/Component/Form/CHANGELOG.md +++ b/src/Symfony/Component/Form/CHANGELOG.md @@ -6,6 +6,7 @@ CHANGELOG * added `Symfony\Component\Form\ClearableErrorsInterface` * deprecated calling `FormRenderer::searchAndRenderBlock` for fields which were already rendered + * deprecated the `scale` option of the `IntegerType` 4.1.0 ----- diff --git a/src/Symfony/Component/Form/Extension/Core/Type/IntegerType.php b/src/Symfony/Component/Form/Extension/Core/Type/IntegerType.php index 4051cbf23d3ac..6134a9f5e8c96 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/IntegerType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/IntegerType.php @@ -25,7 +25,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->addViewTransformer( new IntegerToLocalizedStringTransformer( - $options['scale'], + null, $options['grouping'], $options['rounding_mode'] )); @@ -37,8 +37,6 @@ public function buildForm(FormBuilderInterface $builder, array $options) public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( - // default scale is locale specific (usually around 3) - 'scale' => null, 'grouping' => false, // Integer cast rounds towards 0, so do the same when displaying fractions 'rounding_mode' => IntegerToLocalizedStringTransformer::ROUND_DOWN, @@ -55,7 +53,9 @@ public function configureOptions(OptionsResolver $resolver) IntegerToLocalizedStringTransformer::ROUND_CEILING, )); + $resolver->setDefined('scale'); $resolver->setAllowedTypes('scale', array('null', 'int')); + $resolver->setDeprecated('scale'); } /** diff --git a/src/Symfony/Component/Form/Tests/Command/DebugCommandTest.php b/src/Symfony/Component/Form/Tests/Command/DebugCommandTest.php index fc8cd78e00332..0d5d85675b41e 100644 --- a/src/Symfony/Component/Form/Tests/Command/DebugCommandTest.php +++ b/src/Symfony/Component/Form/Tests/Command/DebugCommandTest.php @@ -15,11 +15,13 @@ use Symfony\Component\Console\Application; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Tester\CommandTester; +use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Command\DebugCommand; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormRegistry; use Symfony\Component\Form\ResolvedFormTypeFactory; -use Symfony\Component\Form\Tests\Console\Descriptor\FooType; +use Symfony\Component\OptionsResolver\Options; +use Symfony\Component\OptionsResolver\OptionsResolver; class DebugCommandTest extends TestCase { @@ -40,10 +42,15 @@ public function testDebugDeprecatedDefaults() $this->assertEquals(0, $ret, 'Returns 0 in case of success'); $this->assertSame(<<find('debug:form')); } } + +class FooType extends AbstractType +{ + public function configureOptions(OptionsResolver $resolver) + { + $resolver->setRequired('foo'); + $resolver->setDefined('bar'); + $resolver->setDeprecated('bar'); + $resolver->setDefault('empty_data', function (Options $options) { + $foo = $options['foo']; + + return function (FormInterface $form) use ($foo) { + return $form->getConfig()->getCompound() ? array($foo) : $foo; + }; + }); + $resolver->setAllowedTypes('foo', 'string'); + $resolver->setAllowedValues('foo', array('bar', 'baz')); + $resolver->setNormalizer('foo', function (Options $options, $value) { + return (string) $value; + }); + } +}