Symfony 2:形式中的学说约束

时间:2012-03-13 21:36:27

标签: php symfony doctrine-orm entity

我有一个带有字段url的实体,该实体通过发送基于同一实体的表单持久保存到数据库。

我可以在validation.yml中为表单类型设置约束以及NotBlankUrl等自定义消息。那一切都很好。但是当我尝试持久存在于DB中的实体时,我收到一条错误,指出该值已经存在(url)。

如何为此UniqueEntity约束设置自定义消息?

我尝试在validation.yml中添加UniqueEntity,但它位于不同的命名空间中,我无法理解它是如何工作的,或者如何设置它。默认情况下,couse url被定义为原始实体注释中的唯一字段,但是如何更改错误消息??

1 个答案:

答案 0 :(得分:2)

我刚刚找到了解决自己问题的方法。

所有验证都可以在validation.yml中定义,但由于我使用注释来定义我的实体,所以最好将所有验证,消息等放在这些注释中。

我们应该为非空白字段设置@Assert\NotBlank,为唯一验证设置@ORM\UniqueEntity(message="my custom error")

我很抱歉用我的问题充斥了网站,但我希望有人可能觉得这很有用..

P.S。:注释或YML没有区别,设置是相同的。我想在我的情况下应该是这样的:

Namespace\Class:
    constraints:
        - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
            fields: url
            message: "My custom message"

它非常灵活,以为我不知道如果数据库中已存在不同的字段,我们怎么能设置不同的消息...