Php Symfony2覆盖约束
我有Php Symfony2覆盖约束,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有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"
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;
}
及
现在,当我将一个新的UserEntity
以长或短名称发布到表单中时,Symfony给了我两个错误:(长:)
- default.name.long
- user.name.long
e、 g.我想覆盖,但不要再添加一个如果您可以(根据应用程序逻辑)删除这两个验证并创建自己的验证,那么自定义验证约束可能会对您有所帮助 也许是这样的
如果您愿意通过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
如果您想将验证文件放在非标准位置,请参见我想您需要的是验证程序组。因此,您可以将验证规则分成多个组
有关此功能的文档非常丰富:
正如我所知,您不能覆盖为父类定义的验证。最好的解决方法是将验证组添加到您的Validatior中,您将使用该组进行实体验证。也没有找到任何其他方法
BaseEntity:
properties:
name:
- NotBlank:
message: user.name.not_blank
- Length:
min: 2
minMessage: user.name.short
max: 255
maxMessage: default.name.long