deprecate the unused scale option

This commit is contained in:
Christian Flothmann 2018-09-23 21:17:20 +02:00
parent a26bd3673f
commit 40413aad24
5 changed files with 42 additions and 5 deletions

View File

@ -55,6 +55,8 @@ Finder
Form Form
---- ----
* The `scale` option of the `IntegerType` is deprecated.
* Deprecated calling `FormRenderer::searchAndRenderBlock` for fields which were already rendered. * 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. Instead of expecting such calls to return empty strings, check if the field has already been rendered.

View File

@ -69,6 +69,11 @@ Finder
* The `Finder::sortByName()` method has a new `$useNaturalSort` argument. * The `Finder::sortByName()` method has a new `$useNaturalSort` argument.
Form
----
* The `scale` option was removed from the `IntegerType`.
FrameworkBundle FrameworkBundle
--------------- ---------------

View File

@ -6,6 +6,7 @@ CHANGELOG
* added `Symfony\Component\Form\ClearableErrorsInterface` * added `Symfony\Component\Form\ClearableErrorsInterface`
* deprecated calling `FormRenderer::searchAndRenderBlock` for fields which were already rendered * deprecated calling `FormRenderer::searchAndRenderBlock` for fields which were already rendered
* deprecated the `scale` option of the `IntegerType`
4.1.0 4.1.0
----- -----

View File

@ -25,7 +25,7 @@ class IntegerType extends AbstractType
{ {
$builder->addViewTransformer( $builder->addViewTransformer(
new IntegerToLocalizedStringTransformer( new IntegerToLocalizedStringTransformer(
$options['scale'], null,
$options['grouping'], $options['grouping'],
$options['rounding_mode'] $options['rounding_mode']
)); ));
@ -37,8 +37,6 @@ class IntegerType extends AbstractType
public function configureOptions(OptionsResolver $resolver) public function configureOptions(OptionsResolver $resolver)
{ {
$resolver->setDefaults(array( $resolver->setDefaults(array(
// default scale is locale specific (usually around 3)
'scale' => null,
'grouping' => false, 'grouping' => false,
// Integer cast rounds towards 0, so do the same when displaying fractions // Integer cast rounds towards 0, so do the same when displaying fractions
'rounding_mode' => IntegerToLocalizedStringTransformer::ROUND_DOWN, 'rounding_mode' => IntegerToLocalizedStringTransformer::ROUND_DOWN,
@ -55,7 +53,9 @@ class IntegerType extends AbstractType
IntegerToLocalizedStringTransformer::ROUND_CEILING, IntegerToLocalizedStringTransformer::ROUND_CEILING,
)); ));
$resolver->setDefined('scale');
$resolver->setAllowedTypes('scale', array('null', 'int')); $resolver->setAllowedTypes('scale', array('null', 'int'));
$resolver->setDeprecated('scale');
} }
/** /**

View File

@ -15,11 +15,13 @@ use PHPUnit\Framework\TestCase;
use Symfony\Component\Console\Application; use Symfony\Component\Console\Application;
use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\InvalidArgumentException;
use Symfony\Component\Console\Tester\CommandTester; use Symfony\Component\Console\Tester\CommandTester;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Command\DebugCommand; use Symfony\Component\Form\Command\DebugCommand;
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormRegistry; use Symfony\Component\Form\FormRegistry;
use Symfony\Component\Form\ResolvedFormTypeFactory; 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 class DebugCommandTest extends TestCase
{ {
@ -40,10 +42,15 @@ class DebugCommandTest extends TestCase
$this->assertEquals(0, $ret, 'Returns 0 in case of success'); $this->assertEquals(0, $ret, 'Returns 0 in case of success');
$this->assertSame(<<<TXT $this->assertSame(<<<TXT
Built-in form types (Symfony\Component\Form\Extension\Core\Type)
----------------------------------------------------------------
IntegerType
Service form types Service form types
------------------ ------------------
* Symfony\Component\Form\Tests\Console\Descriptor\FooType * Symfony\Component\Form\Tests\Command\FooType
TXT TXT
@ -147,3 +154,25 @@ TXT
return new CommandTester($application->find('debug:form')); return new CommandTester($application->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;
});
}
}