【问题标题】:How to create a number field that accepts numbers with comma or period in symfony 2如何在 symfony 2 中创建一个接受带逗号或句点的数字的数字字段
【发布时间】:2012-08-19 11:16:56
【问题描述】:

我有一个带有十进制字段的应用程序,例如:

/**
 * @var decimal $amount
 *
 * @ORM\Column(name="amount", type="decimal", scale="2")
 */
private $amount;

我希望表单接受格式为“3,4”或“3.4”的数字。

如果我输入“3.4”,应用程序将保存在数据库“3.4”中,如果我输入“3,4”,应用程序将保存在数据库“34”中(是的,没有逗号,也没有显示验证错误!)。

(这是一个已知的 symfony 错误:https://github.com/symfony/symfony/issues/2059

那么,我怎样才能接受带逗号和小数点的数字?

(我已经尝试在 DataTrasformer 中用点替换逗号,但 DataTransformer 采用已经标准化的数字。)

【问题讨论】:

标签: symfony decimal


【解决方案1】:

我发现了一个使用 DataTransformer 和 appendClientTransformer 的解决方法,这里是 sn-p:https://gist.github.com/3394880

【讨论】:

  • 接受你自己的答案,让人们知道问题已经解决了
【解决方案2】:

我遇到了同样的问题,我决定在没有语言环境格式化程序的情况下创建自己的数字字段。这是我想出的变压器: https://gist.github.com/3411067

注意:我必须做的一件事是抛出一个TransformationFailedException 来获得正确的验证。

【讨论】:

  • 你确定 reverseTransform 应该返回一个数字吗?我会返回一个字符串并将验证委托给我认为无论如何都会执行的原始数据类型转换器..
  • 不,它没有被执行。我用自定义数字类型更新了要点。在 NumberToLocalizedStringTransformer 中困扰我的不仅仅是逗号问题。我正在重构一个遗留应用程序,该应用程序无论如何都要使用正则表达式替换逗号来浮动。使用自定义转换器设计自定义类型比测试语言环境格式化程序的引入如何改变应用程序更安全。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 2017-04-13
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
相关资源
最近更新 更多