非映射字段在必填且为空时有效

Non-mapped field is valid whilst it is required and empty

我有一个未映射的必填字段。

$builder->add('termsAndConditions', CheckboxType::class, [
    'required' => true,
    'mapped' => false,
    'attr' => [
        'class' => 'c-custom-option',
    ],
]);

当客户端验证为空时会抛出错误,但服务器端说它是有效的。目前我对表单提交进行了额外检查 $form->isSubmitted() && $form->isValid() && $form->get('termsAndConditions')->getData()==true 但 form->isValid() 方法在我看来不应该 return true

如您在 docs 中所见:

如果为 true,将呈现 HTML5 必需的属性。相应的标签也将呈现为所需的 class.

这是肤浅的,独立于验证。充其量,如果你让 Symfony 猜测你的字段类型,那么这个选项的值将从你的验证信息中猜测。

因此,如您所见,它仅与客户端验证有关。