2016-07-25 88 views
2

我希望在提交表单之前显示表单的错误。 我有数据库数据不完整的表单,所以我想在试图保存之前显示已经丢失的内容。之前的表单验证

但$ form-> isValid()仅在表单也被提交时才会执行(只发生在post上)。

我试过了验证程序,但是这给了我一个错误列表而没有将它们添加到窗体中,如果我自己这样做似乎是一个糟糕的工作,但是我无法弄清楚源代码如何实现这一点。

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

回答

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

看到source code提交方法。

+1

谢谢! 我试过$ form-> submit(null,false);但它给了我一个csrf错误,我不知道如何复制它。奇迹般有效! – tmas