Symfony2如何从实体中删除@ asset / notblank约束

时间:2016-06-27 08:25:37

标签: symfony annotations doctrine

我有以下问题: 我在tableB实体中扩展了一个实体tableA,我想覆盖一个字段上的@ assert / notblank注释。

Class tableA{
...
/**
 * @ORM\Column(type="string", length=4)
 * @Assert\NotBlank(message="please.enter.a.value")
 */
protected $myfield;
}

扩展类:

Class tableB extends tableA{
...
/**
 * @ORM\Column(type="string", length=4, nullable=true)
 */
protected $myfield;
}

当我使用tableB创建表单时,TableA的非空白约束仍然有效。

有什么想法吗?

我尝试使用@ORM \ AttributeOverride注释,但它不起作用......

1 个答案:

答案 0 :(得分:0)

似乎确实Symfony Validation组件无法理解发生了什么。 解决方法是将验证约束放在getter上:

Class tableA{
/**
 * @ORM\Column(type="string", length=4)
 */
protected $myfield;
}

/**
 * @Assert\NotBlank(message="please.enter.a.value")
 */
public function getMyfield()
{
    // ...
}

在扩展课程中:

Class tableAB extends tableA{
public function getMyfield()
{
    // ...
}