强制 Symfony 表单验证而不实际提交

eRI*_*RIZ 6 symfony-forms symfony

是否可以强制手动执行表单字段验证?

我有一个表格。它具有全局表单验证。如果用户提交数据,一切都会正常进行。

但我想在向用户显示表单之前触发验证 - 在提交之前显示错误。

尝试使用方法提交$form->submit([]),但它不会触发表单字段验证。

关于这个问题有什么想法吗?我有什么错吗?

eRI*_*RIZ 2

原因既复杂又简单。

// form instantiation

$type = new MyType();

$options = [
    'csrf_protection'=>!empty($_POST[$type->getName()])
];

$form = $this->createForm($type, [/* or entity */], $options);
$form->handleRequest($request);

if(!$form->isSubmitted()){
    $form->submit([]);
}
Run Code Online (Sandbox Code Playgroud)

现在我可以正确地看到错误。最棘手的部分之一是我不知道表单$options在创建后是只读的,empty如果您想打开 CSRF 保护,则必须进行检查。