我有BaseEntity
课程:
class BaseEntity
{
/**
* The name.
*
* @var string
*
* @ORM\Column(name="name", type="string", length=255, unique=true, nullable=false)
* @Assert\Length(min=2, max=255, minMessage="default.name.short", maxMessage="default.name.long")
* @Assert\NotBlank(message = "default.name.not_blank")
*/
private $name;
}
和
class UserEntity extends BaseEntity
{
/**
* {@inheritDoc}
*
* @Assert\Length(min=2, max=255, minMessage="user.name.short", maxMessage="default.name.long")
* @Assert\NotBlank(message = "user.name.not_blank")
*/
private $name;
}
现在,当我将一个新的UserEntity
发布到长或短名称的表单时,Symfony给了我2个错误:(长篇:)
但我希望它只显示一个错误,所以: - user.name.long
e.g。我想覆盖,但不要添加另一个
答案 0 :(得分:0)
如果可以(根据您的应用程序逻辑)删除这两个验证并制作自己的验证,也许自定义验证约束可以帮助您。
这样的事可能吗?
http://symfony.com/doc/current/cookbook/validation/custom_constraint.html
答案 1 :(得分:0)
如果您乐意通过YAML文件而不是注释来设置至少一些验证规则,则可以覆盖基类的验证设置,而无需编辑类文件本身。 / p>
您的YAML文件看起来像这样,需要位于src/YourApp/YourBundle/Resources/config/validation.yml
之类的位置才能自动选取:
BaseEntity:
properties:
name:
- NotBlank:
message: user.name.not_blank
- Length:
min: 2
minMessage: user.name.short
max: 255
maxMessage: default.name.long
如果您要将验证文件放在非标准位置,请参阅https://stackoverflow.com/a/24210501/328817
答案 2 :(得分:0)