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

时间:2018-11-19 12:09:09

标签: symfony symfony4

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

  1. 用户-非空白
  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);

但是问题在于它仅允许验证单个数组,例如
$request->request->get('absences')[0]

这是数组的样子:

enter image description here

1 个答案:

答案 0 :(得分:3)

您必须将Collection约束放在All约束内:

  

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

因此,您的代码可能看起来像这样:

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