如何在yaml中使用symfony回调约束和验证组?

时间:2015-05-03 17:49:20

标签: validation symfony

我正在使用Symfony 2.6,并且按照这些教程我如何使用验证回调约束:

http://symfony.com/blog/new-in-symfony-2-4-a-better-callback-constraint

http://symfony.com/doc/current/reference/constraints/Callback.html#external-callbacks-and-closures

要调用外部验证调用,我尝试使用以下yaml配置:

App\APIBundle\Entity\Order:
properties:
    id:
        - Type:
            type: integer
            message: "Der Wert {{ value }} ist kein gültiger {{ type }}."
    amount:
        - Type:
            type: integer
            message: "Der Wert {{ value }} ist kein gültiger {{ type }}."
            groups: [ "AppOrder", "AppOrderbasket" ]
        - Callback: [App\APIBundle\Validator\Validator, validate]
            groups: [ "AppOrder", "AppOrderbasket" ]

尝试使用外部回调验证类验证金额属性时遇到以下问题:

功能"验证"在验证类App \ APIBundle \ Validator \ Validator中根本没有被调用。我已经尝试通过添加"组来添加验证组"属性到回调约束。这似乎没有效果,因为我收到此警告(警告:trim()期望参数1为字符串,给定数组);

如果我删除"组"属性警告消失,但仍未调用验证器。

有什么想法吗?

提前致谢
ninsky

1 个答案:

答案 0 :(得分:4)

您现在正在使用正常语法混合default option syntax。这不起作用。

如果您只需要指定默认选项(callback约束的情况下为Callback选项),则可以使用Callback: [App\APIBundle\Validator\Validator, validate]。但是,如果您必须定义2个选项(在您的情况下为callbackgroups),则必须使用常规语法:

- Callback:
    callback: [App\APIBundle\Validator\Validator, validate]
    groups: [AppOrder, AppOrderbasket]