Symfony:4在属性路径中给出的类型为“整数”,“ NULL”的期望参数

时间:2019-06-07 07:22:10

标签: symfony symfony4

出现错误,

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

代码如下,

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

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

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

在编辑时发送空白数据时出现问题。 提交时有空白的经验(其必填字段为表格),它给出以下错误

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

我尝试了互联网上的其他选项,例如将“ empty_data”设置为null或“,但无法正常工作。”

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:-1)

您应该填写必填字段,而不是接受的答案:

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

您的业务逻辑遵循以下原则:

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

如果要求给定null值(如模型的逻辑要求),则不应更改该值以允许'required' => false,而应调整表单输入。

这样,将'required' => true更改为''。这样,必须必须输入(因此,不允许发送任何空值),并且在后端验证期间,仍然不允许该值from jinja2 import Environment, FileSystemLoader file_loader = FileSystemLoader('.') from jinja2 import Environment, FileSystemLoader env = Environment(loader=file_loader) template = env.get_template('bgp_template.j2') output = template.render(local_asn='1111', bgp_neighbor='192.168.1.1', remote_asn='2222') print(output) em>。

文档: 看一下required option,确保同时阅读它如何影响empty_data option