Symfony 验证器条件验证

Symfony validator conditional validation

 * @Assert\Type(type="array")
 * @Assert\Count(
 *     min=5,
 *     max=10
 * )

我需要验证一个类型数组,然后我需要验证数组是否有最小和最大计数。

但是当我发送一个字符串值时,Assert\Type 评估它不是一个有效的类型,但是尽管验证继续到 Assert\Count 并且有问题它不是一个数组并且 Assert\Count 抛出 UnexpectedValueException 并且我有消息:This value should be of type {{ type }}.,这对我来说不是正确的验证消息。

只有当Assert\Type条件正确时才可以做Assert\Count吗?

如果我理解你的问题,那么使用 Assert Sequentially 就是解决方法。

将您的断言更新为如下所示:

 * @Assert\Sequentially({
 *     @Assert\Type(type="array"),
 *     @Assert\Count(min=5, max=10),
 * })
 */

如果您的 Type 不是数组并且不执行任何进一步验证,将引发第一次验证。