Symfony 由于表单验证,我不能在实体的setter中定义参数类型吗?

Symfony 由于表单验证,我不能在实体的setter中定义参数类型吗?,symfony,Symfony,当将空值传递给表单中的标签字段时,我得到一个PHP错误,这是由Symfony试图将null传递给setter引起的 由于表单验证,我不能在实体的setter中定义参数类型吗 class MyEntity { ... /** * @var string * * @Assert\NotBlank() * @ORM\Column(type="string", length=128, nullable=false) */ pr

当将空值传递给表单中的
标签
字段时,我得到一个PHP错误,这是由Symfony试图将null传递给setter引起的

由于表单验证,我不能在实体的setter中定义参数类型吗

class MyEntity {

    ...

    /**
     * @var string
     *
     * @Assert\NotBlank()
     * @ORM\Column(type="string", length=128, nullable=false)
     */
    private $label;

    ....

    public function setLabel(string $label): void
    {
        $this->label = $label;
    }

    ...

如果希望实体处于有效状态,则不应将其与表单链接,必须使用表示表单的DTO对象,然后在表单有效时使用值更新实体

最简单的方法是更改setter/getter以能够返回/设置空值

public function setLabel(string $label = null): void
{
    $this->label = $label;
}
public function getLabel(): ?string
{
    return $this->label;
}

如果希望实体处于有效状态,则不应将其与表单链接,必须使用表示表单的DTO对象,然后在表单有效时使用值更新实体

最简单的方法是更改setter/getter以能够返回/设置空值

public function setLabel(string $label = null): void
{
    $this->label = $label;
}
public function getLabel(): ?string
{
    return $this->label;
}
一些提示/参考使用一些提示/参考使用