[英]Symfony2 Override Constraints
我有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
例如,我想覆盖 ,但不要添加另一个
如果可以(根据您的应用程序逻辑)删除这两个验证并自行创建,也许自定义验证约束可以帮助您。
这样的事可能吗?
http://symfony.com/doc/current/cookbook/validation/custom_constraint.html
如果您乐意通过YAML文件而不是注释设置至少一些验证规则,则可以覆盖基类的验证设置,而无需编辑类文件本身。
你的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.