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
----
* 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.

View File

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

View File

@ -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
-----

View File

@ -25,7 +25,7 @@ class IntegerType extends AbstractType
{
$builder->addViewTransformer(
new IntegerToLocalizedStringTransformer(
$options['scale'],
null,
$options['grouping'],
$options['rounding_mode']
));
@ -37,8 +37,6 @@ class IntegerType extends AbstractType
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 @@ class IntegerType extends AbstractType
IntegerToLocalizedStringTransformer::ROUND_CEILING,
));
$resolver->setDefined('scale');
$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\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 @@ class DebugCommandTest extends TestCase
$this->assertEquals(0, $ret, 'Returns 0 in case of success');
$this->assertSame(<<<TXT
Built-in form types (Symfony\Component\Form\Extension\Core\Type)
----------------------------------------------------------------
IntegerType
Service form types
------------------
* Symfony\Component\Form\Tests\Console\Descriptor\FooType
* Symfony\Component\Form\Tests\Command\FooType
TXT
@ -147,3 +154,25 @@ TXT
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;
});
}
}