【问题标题】:Symfony2 how to remove @asset/notblank constraint when heriting from entitySymfony2从实体继承时如何删除@asset/notblank约束
【发布时间】:2016-06-27 08:25:36
【问题描述】:

我有以下问题: 我在 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 注释,但它不起作用...

【问题讨论】:

标签: symfony annotations doctrine


【解决方案1】:

看来 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()
{
    // ...
}

【讨论】:

  • 感谢您的回复,它解决了部分问题。但问题的第二部分是我无法修改 tableA 实体的来源,因为它位于供应商捆绑包中......
  • 也许您仍然可以添加 getter 约束?文档在这一点上并不清楚,它可能会覆盖其他任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
相关资源
最近更新 更多