我想在提交表单之前已经显示了表单的错误。
我有数据库数据不完整的表单,所以我想在他们尝试保存之前显示已经丢失的内容。
但是 $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/