提交前的表单验证

4
我希望在表单提交之前就能显示表单的错误信息。我的表单中由于数据库数据不完整,所以我想在保存之前显示已经缺失的内容。
然而,$form->isValid() 只有在表单被提交时才会执行(这只会发生在提交后)。
我尝试了验证器,但它只给我提供了一个错误列表,而没有将它们添加到表单中。如果我自己这样做,似乎是一个不好的解决方法。然而,我无法从源代码中找到如何实现此功能的方法。
$form = $this->get('form.factory')->create(SchoolFormType::class, $school, $formOptions);
$form->handleRequest($request);
if ($form->isValid()) {
    // ...
}
1个回答

1
您可以使用以下代码模拟提交操作:

$form->handleRequest($request);

$wasSubmitted = $form->isSubmitted();

if(!$wasSubmitted){
    $form->submit($form->getData(),false);
}

if ($form->isValid()) {
    // ...

    // next lines are to be sure that the form will always need to be submitted manualy :
    if($wasSubmitted){
        $em->persist($entity);
        $em->flush();

        return $this->render ...
    }
}

return $this->render ...

请查看源代码中的submit方法。

2
谢谢!我尝试了 $form->submit(null, false); 但是它给了我一个 csrf 错误,我不确定如何复制它。现在它完美运行! - tmas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接