Symfony复合UniqueEntity约束xml

时间:2018-03-02 13:59:37

标签: xml symfony validation

我想知道如何使用xml配置在实体上指定复合UniqueEntity约束。

我知道相当于@UniqueEntity(fields={"field1"})的是

<class name="Namespace\To\Entity">
    <constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">
        <option name="fields">field1</option>
        <option name="errorPath">field1</option>
        <option name="message">error.message.key</option>
    </constraint>
</class>

但我无法找到如何在xml上提供there mentioned数组以实现@UniqueEntity(fields={"field1, "field2"})

我尝试了各种组合,比如

<class name="Namespace\To\Entity">
    <constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">
        <option name="fields">field1</option>
        <option name="fields">field2</option>
        <option name="errorPath">field1</option>
        <option name="message">error.message.key</option>
    </constraint>
</class>

甚至

<class name="Namespace\To\Entity">
    <constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">
        <option name="fields">field1, field2</option>
        <option name="errorPath">field1</option>
        <option name="message">error.message.key</option>
    </constraint>
</class>

但到目前为止还没有。

此致

1 个答案:

答案 0 :(得分:0)

在进一步阅读之后,我最终查看了Symfony\Component\Validator\Mapping\Load\schema\dic\constraint-mapping\constraint-mapping-1.0.xsd文件,并在那里找到了答案。

如果您希望xml等效于@UniqueEntity(fields={"field1", "field2"}),则需要使用value元素。

这应该是什么样的

<class name="Namespace\To\Entity">
    <constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">
       <option name="fields">
            <value>field1</value>
            <value>field2</value>
        </option>
        <option name="errorPath">field1</option>
        <option name="message">error.message.key</option>
    </constraint>
</class>

希望这篇文章能在将来节省一些时间。

此致