Symfony:4应为“integer”类型的参数,在属性路径处给定“NULL”

Symfony:4应为“integer”类型的参数,在属性路径处给定“NULL”,symfony,symfony4,Symfony,Symfony4,低于错误 应为integer类型的参数,在属性路径经验处给定NULL 代码如下: ->add('experience', TextType::class, [ 'constraints' => [ new NotBlank([ "message" => $this->translator->trans('Please enter experience.') ]), new Length(

低于错误

应为integer类型的参数,在属性路径经验处给定NULL

代码如下:

->add('experience', TextType::class, [
    'constraints' => [
        new NotBlank([
            "message" => $this->translator->trans('Please enter experience.')
        ]),
        new Length([
            'max' => 2
        ]),
    ],
    'required' => false
])
当我提交空白表格创建时间,它显示我请输入经验

现在在编辑表单上,若我插入了错误的值,那个么更多的数据,比如3434,它显示的值应该不超过2个字符

当我在编辑时发送空白数据时出现问题。 以表格形式提交其必填字段时,会出现以下错误

应为integer类型的参数,在属性路径经验处给定NULL


我尝试过internet上的不同选项,如将空数据设置为null或,但它不起作用。

如果您接受null值,则setter方法应允许null值,具体形式如下:

public function setExperience(?int $experience): void
{
    $this->experience = (int) $experience;
}

为了达到超精确的效果,并且如果您想要有空值,您应该避免将映射添加到整数。去掉上面函数体中的int。如果你想精确,int同时接受int和null。当然,这就是为什么我说的是主体的定义,而不是声明——也就是:$this->experience=int$experience;因为如果您将其保持为您所写的状态,则将NULL值作为默认int值发送到数据库。也可以通过在公共函数setExperience?int$experience:void中的类型转换之前添加问号来解决此问题