我为实体配置了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。