我正在开发一个Symfony2.3项目,我需要一个input number
,它允许我用小数值保存值并对箭头进行采样。使用以下代码,我可以显示小数,但只保存整个部分。
实体
/**
*
* @ORM\Column(name="horas", type="decimal", scale=1)
* @Assert\NotBlank()
*/
private $hours;
FormType
->add('hours','integer', array('required' => true,'attr' => array('min' => 15,'max' => 40,'step' => 0.5)))
感谢您的帮助。
答案 0 :(得分:2)
要在十进制字段中存储浮点值,您必须首先确定该点之前需要多少位数,以及之后的位数。例如,您的字段可能如下所示:
/**
* @ORM\Column(type="decimal", precision=3, scale=1)
* @Assert\Range(min=15, max=40)
*/
private $hours;
在decimal
字段中,precision
始终是总位数,而scale
表示小数部分的长度。在上面的示例中,十进制字段可以存储0到99之间的值,而点之后的一个数字将被存储。
请注意,Doctrine会将字段表示为字符串,因此如果您检索实体,则字段的值将为"20.5"
(即字符串)。您必须再次手动将值转换为浮点值。这可以在现场的getter中完成:
public function getHours()
{
return (float) $this->hours;
}