当我尝试保存类型“百分比”的Symfony的2.8表单域与分数值,验证返回Symfony的2.8:百分比表单字段验证不正确的分数
此值不能为空。
我已经设置了场在我的实体按指示:
/**
* @var decimal
*
* @ORM\Column(
name="total_percent",
type="decimal",
precision=14,
scale=8,
nullable=false
)
* @Assert\NotNull()
*/
private $percent;
和创建我的领域这样:
->add('percent',
PercentType::class,
array(
'scale' => 8,
'attr' => array('class' => 'percent_field'))
)
我有双重检查数据库和我可以用分数创建条目,所以这个问题似乎与Symfony的形式有关。但是,我在代码中找不到问题。 有没有人成功实现了这一点。实质上,我希望能够节省百分之一点五,如1.5%。 任何建设性的想法(关于手头的问题)表示赞赏。
@roland我不确定验证错误是否由于错误的设置而导致的,但是您的映射肯定是错误的。如果错误不消失,请查看Symfony profiler - >表单以查看传递给表单的数据。让我知道:-) –
Symfony将“百分比”字段值转换为其实际值,例如, 1.5%在数据库中存储为0.015(这可以工作,我可以手动将该值添加到数据库)。所以在你的情况下,我将无法存储1.5(precision = 3,scale = 1)。因为它将被存储为0.015。当scale = 1时,这会使它0.0,这将触发非空错误? – roland
@roland我用完整的工作配置更新了我的答案。PS:请记住使用**逗号**“”插入值,而不是点(Symfony会在将数据存储到数据库之前转换“视图”值)。 –