【问题标题】:Symfony:4 Expected argument of type "integer", "NULL" given at property pathSymfony:4 在属性路径中给出“整数”、“NULL”类型的预期参数
【发布时间】:2019-06-07 07:22:10
【问题描述】:

遇到错误,

在属性路径“experience”中给出“整数”、“NULL”类型的预期参数。

代码如下,

->add('experience', TextType::class, [
    'constraints' => [
        new NotBlank([
            "message" => $this->translator->trans('Please enter experience.')
        ]),
        new Length([
            'max' => 2
        ]),
    ],
    'required' => false
])

当我提交空白表单(创建时间)时,它显示“请输入经验。”

现在在编辑表单上,如果我插入错误的值(更多数据,如 3434)它显示值不应超过 2 个字符

当我在编辑时发送空白数据时出现问题。 以空白经验提交(表单中的必填项),它给出以下错误

在属性路径“experience”中给出“整数”、“NULL”类型的预期参数。

我尝试过来自互联网的不同选项,例如将“empty_data”设置为 null 或 '',但它不起作用。

【问题讨论】:

    标签: symfony symfony4


    【解决方案1】:

    如果你接受 null 值,你的 setter 方法应该允许值,从形式来看:

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

    【讨论】:

    • 为了超级精确,如果你想有 NULL 值,你应该避免将映射添加到整数。去掉上面函数体中的 (int)。
    • 如果你想精确一点,?int 接受 int 和 null。我不希望任何人在那里放任何东西。
    • 当然,这就是为什么我在谈论定义(主体),而不是声明 - 即: $this->experience = (int) $experience;因为如果您按原样保留它,则值为 NULL 将使用 0 作为默认 (int) 值发送到数据库。
    • 问题也可以通过在参数中的类型转换前加上问号来解决,公共函数 setExperience(?int $experience): void
    猜你喜欢
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多