我想在提交表单之前已经显示了表单的错误。
我有数据库数据不完整的表单,所以我想在他们尝试保存之前显示已经丢失的内容。

但是 $form->isValid() 仅在表单也提交时执行(仅在发布时发生)。

我尝试了验证器,但这给了我一个错误列表,但没有将它们添加到表单中,如果我自己这样做,这似乎是一个糟糕的解决方法,但是我无法从源中找出如何实现这一点。

$form = $this->get('form.factory')->create(SchoolFormType::class, $school, $formOptions);
$form->handleRequest($request);
if ($form->isValid()) {
    // ...
}

最佳答案

您可以使用以下命令模拟提交:

$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 ...

请参阅 source code 中的 submit 方法。

关于validation - 发布前表单验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38571659/

10-15 09:18