【发布时间】:2012-01-23 22:42:13
【问题描述】:
我使用 Doctrine 将 symfony2 实体映射到一个表。属性之一是:
/**
* @var decimal $price
*
* @ORM\Column(name="price", type="decimal", nullable=false)
*/
private $price;
什么Assert 可以满足我的要求,即$price 应该是一个有效的小数?
如果我保持原样,那么将字符串 foo 作为十进制值传递会导致验证错误,而传递字符串 NaN 会通过验证,因为字符串 NaN 被映射为 float(NaN),因此被视为一个有效的十进制值。
有什么解决方法吗?
Symfony 开发团队保证这不是问题:https://github.com/symfony/symfony/issues/3161
好吧,如果不是 - 那么可能有一个解决方案来验证它。有什么想法吗?
【问题讨论】:
-
如果有人需要在验证中允许“NaN”怎么办?只需编写您自己的转换器 'non_nan_decimal' ;)
-
@meze: omg )) 我需要做多少步骤才能从操作方法中获取基本示例? ;-)
-
你说 'NaN' 是十进制的有效值,然后希望它被转换为 0,因为你想要这样;)
-
@meze:我说根据验证器是有效的。对我(和数据库)来说 - 它不是有效值
-
我没有看到任何关于教义 orm 的问题,它为价格字段设置了空值。另外,你不能在 setter 中标准化价格吗?