【问题标题】:Form validation before post发布前的表单验证
【发布时间】:2016-07-25 15:21:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: validation symfony


    【解决方案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中的提交方法。

    【讨论】:

    • 谢谢!我试过 $form->submit(null, false);但它给了我一个 csrf 错误,我不知道如何复制它。像魅力一样工作!
    猜你喜欢
    • 1970-01-01
    • 2014-07-11
    • 2013-04-10
    • 2014-06-19
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多