繁体   English   中英

Symfony2覆盖约束

[英]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个错误:(很长:)

  • default.name.long
  • user.name.long

但我希望它只显示一个错误,所以: - 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

我想你正在寻找一个验证组。 因此,您可以将验证规则拆分为组。

有关此功能的优秀文档:

http://symfony.com/doc/current/validation/groups.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM