Symfony 3:如何验证对象数组?

时间:2019-03-20 16:47:14

标签: symfony validation

我有以下实体:

tasks

[ { "designation": "Task 1", "action": "Do action 1", //... }, { "designation": "Task 2", "action": "Do action 2", //... }, //... ] 作为数组存储在Json File中,如下所示:

...\Entity\Jobs:
  properties:
    tasks:
      - Collection:
        allowMissingFields: false
        missingFieldsMessage: jobs.tasks.missingfields
        fields:
          designation:
            - NotBlank:
              message: jobs.tasks.fields.blank
            ##...

当用户从表单定义数据时,我想实现一个用于验证的断言。

我实现了这一步(我使用yml):

data.tasks[designation]

当我尝试验证表单时,我遇到了data.tasks[action]function readURL(event) { let input = event.target; if (input.files) { Array.from(input.files).forEach((f, i) => { var reader = new FileReader(); reader.onload = function(e) { $('#img' + i).attr('src', e.target.result); }; reader.readAsDataURL(f); }); } }的验证错误。

验证应应用于第二级数组。
如何为这种阵列配置验证器?

1 个答案:

答案 0 :(得分:1)

与数组键相关时,将使用@Collection()断言,每个数组代表一个任务就是这种情况。如果您只关心其中的值,例如数字数组,则可以使用@All()约束。

在您的情况下,您想同时合并任务列表(@All)和该列表中的每个任务(@Collection)。作为注释,它可能看起来像这样:

class Jobs
{
    /**
     * @Assert\All({
     *      @Collection(...)
     * })
     */
    private $tasks;
}

请参阅:https://symfony.com/doc/current/reference/constraints/All.html