如何在Symfony 4中验证数组数组

Mar*_*tin 2 symfony symfony4

我想知道如何验证symfony中的数组数组。我的验证规则是:

  1. 用户-NotBlank
  2. 日期-日期和非空白
  3. 目前-NotBlank

到目前为止,我已经做到了:

$validator = Validation::createValidator();

$constraint = new Assert\Collection(array(
        'user' => new Assert\NotBlank(),
        'date' => new Assert\Date(),
        'present' => new Assert\NotBlank()
));

$violations = $validator->validate($request->request->get('absences')[0], $constraint);
Run Code Online (Sandbox Code Playgroud)

但是问题是它只允许验证单个数组。
$request->request->get('absences')[0]

这是数组的样子:

在此处输入图片说明

Bar*_*ada 6

您必须将Collection约束放入所有约束:

当应用于数组(或Traversable对象)时,此约束允许您将约束集合应用于数组的每个元素。

因此,您的代码可能如下所示:

$constraint = new Assert\All(['constraints' => [
    new Assert\Collection([
        'user' => new Assert\NotBlank(),
        'date' => new Assert\Date(),
        'present' => new Assert\NotBlank()
    ])
]);
Run Code Online (Sandbox Code Playgroud)