1<?php 2 3/* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Symfony\Component\Form\Extension\Core\Type; 13 14use Symfony\Component\Form\AbstractType; 15use Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer; 16use Symfony\Component\Form\FormBuilderInterface; 17use Symfony\Component\OptionsResolver\OptionsResolver; 18 19class NumberType extends AbstractType 20{ 21 /** 22 * {@inheritdoc} 23 */ 24 public function buildForm(FormBuilderInterface $builder, array $options) 25 { 26 $builder->addViewTransformer(new NumberToLocalizedStringTransformer( 27 $options['scale'], 28 $options['grouping'], 29 $options['rounding_mode'] 30 )); 31 } 32 33 /** 34 * {@inheritdoc} 35 */ 36 public function configureOptions(OptionsResolver $resolver) 37 { 38 $resolver->setDefaults([ 39 // default scale is locale specific (usually around 3) 40 'scale' => null, 41 'grouping' => false, 42 'rounding_mode' => NumberToLocalizedStringTransformer::ROUND_HALF_UP, 43 'compound' => false, 44 ]); 45 46 $resolver->setAllowedValues('rounding_mode', [ 47 NumberToLocalizedStringTransformer::ROUND_FLOOR, 48 NumberToLocalizedStringTransformer::ROUND_DOWN, 49 NumberToLocalizedStringTransformer::ROUND_HALF_DOWN, 50 NumberToLocalizedStringTransformer::ROUND_HALF_EVEN, 51 NumberToLocalizedStringTransformer::ROUND_HALF_UP, 52 NumberToLocalizedStringTransformer::ROUND_UP, 53 NumberToLocalizedStringTransformer::ROUND_CEILING, 54 ]); 55 56 $resolver->setAllowedTypes('scale', ['null', 'int']); 57 } 58 59 /** 60 * {@inheritdoc} 61 */ 62 public function getBlockPrefix() 63 { 64 return 'number'; 65 } 66} 67