Symfony的NumberType表单字段和语言环境

时间:2018-07-12 11:34:04

标签: php symfony symfony-forms

我为实体配置了symfony表单

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\DataSampleRepository")
 */
class DataSample
{

    /**
     * @ORM\Column(type="decimal", precision=20, scale=2)
     */
    private $value;
}

如下:

$datasample = new DataSample();
// $datasample->setValue(1408.55); // <--consider this later XXX
$builder = $this->createFormBuilder($datasample);
$builder->add('value', MoneyType::class , [
            'scale' => 2]);

我主要在德国语言环境中工作,在该语言环境中,大于1000的数字将显示为“ 1.234,56”。

如果我恰好输入此字符串“ 1.234,56”,则表单验证将给出错误TransformationFailedException

如果我输入的数字不带千位分隔符“ 1234,56”(甚至是“ 1234.56” !!!),则表示输入有效,并且也解析了正确的数字(对于两个十进制分隔符)。

如果我取消注释XXX行,则该表单将显示为“ 1234,56”,因此显然可以识别和使用德语区域设置。

我确实测试了带有和不带有intl扩展名的情况,我正在运行symfony 3.4.12和PHP 7.1.19。

0 个答案:

没有答案