Forms 如何将选择表单类型与type=integer断言组合

Forms 如何将选择表单类型与type=integer断言组合,forms,validation,symfony,constraints,assert,Forms,Validation,Symfony,Constraints,Assert,我有一个名为“倾斜度”的字段,它取0到90(度)之间的整数。 在assert语句中,我声明类型必须是integer 在本例中,我希望将字段呈现为一个选项小部件,一个下拉列表,其值范围为0到90。 然而,我无法找到一种方法让选择以整数形式发生。每次我尝试提交表单时,都会出现错误“此字段必须为整型” 有没有办法: 让下拉选择列表和assert\Type(Type=“Integer”)组合使用 工作 实体中属性的定义: /** * @ORM\Column(name="inclinat

我有一个名为“倾斜度”的字段,它取0到90(度)之间的整数。
在assert语句中,我声明类型必须是integer

在本例中,我希望将字段呈现为一个选项小部件,一个下拉列表,其值范围为0到90。
然而,我无法找到一种方法让选择以整数形式发生。每次我尝试提交表单时,都会出现错误“此字段必须为整型”

有没有办法:
让下拉选择列表和assert\Type(Type=“Integer”)组合使用
工作

实体中属性的定义:

    /**
     * @ORM\Column(name="inclination", type="integer", nullable=true)
     * @Assert\NotBlank()
     * @Assert\Min(limit=0)
     * @Assert\Max(limit=90)
     * @Assert\Type(type="integer")
     */
    private $inclination;
表单中字段的构建方式:

$builder->add('inclination', 'choice', array(
            'choices' => $this->getInclinationChoices(), 
            'empty_value' => 'Choose an option',
            ));

private function getInclinationChoices()
    {
        $choices = array();
        for($i=0; $i<= 90; $i++) {
            $choices[$i] = "$i °"; 
        }
        return $choices;
    }
$builder->add('indelation','choice',数组(
'choices'=>this->get倾斜度选项(),
“空值”=>“选择一个选项”,
));
私有函数getClientationChoices()
{
$choices=array();

对于($i=0;$i不确定这是否是正确的Symfony 2方法,但是您可以在实体的
setindings()
方法上强制将值设置为PHP整数类型吗

例如:


我在本地重新创建了您的问题,此修复程序对我有效。

谢谢您的建议,这可能会有效。当我着手进行重构时,我会尝试一下。现在我将其设置为答案,因为它在本地对您有效。它对我有效,并给了我所需的结果。但我仍然觉得可能会有更好的对Symfony友好的w可以这样做(可能是一个表单验证组)。我只是还没有找到它。希望有更多Symfony经验的人有其他解决方案与我们分享。
public function setInclination($inclination)
{
    $this->inclination = (int) $inclination;
}