Php Symfony2:在发布表单之前执行表单验证

Php Symfony2:在发布表单之前执行表单验证,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我会尽我最大的努力来解释这个 在我的应用程序中,当用户最初加载表单时,我需要在表单上显示验证错误。简言之,他们已经输入并保存了数据,但现在数据已经被检查,我们检测到他们在完全提交表单之前需要纠正的错误。(这是一个多步骤的表格,可以在多个会议上填写……要有远见卓识。) 以前我做过类似的事情: 这在SYMFONY>=2.8.10中不起作用 这是可行的,但似乎在Symfony 2.8.10+中出现了问题,但在2.8.9中有效。在2.8.10+中,没有验证错误(表格被视为有效) 我能够在Constrai

我会尽我最大的努力来解释这个

在我的应用程序中,当用户最初加载表单时,我需要在表单上显示验证错误。简言之,他们已经输入并保存了数据,但现在数据已经被检查,我们检测到他们在完全提交表单之前需要纠正的错误。(这是一个多步骤的表格,可以在多个会议上填写……要有远见卓识。)

以前我做过类似的事情:

这在SYMFONY>=2.8.10中不起作用

这是可行的,但似乎在Symfony 2.8.10+中出现了问题,但在2.8.9中有效。在2.8.10+中,没有验证错误(表格被视为有效)

我能够在
ConstraintViolationListInterface
中检索验证错误,但我找不到将其与表单“合并”的方法(我认为这是首选方法)。因为我不能,我尝试了上面的“假”提交表单…这似乎是个坏主意

有更好/合适的方法吗


(注意:表单要复杂得多,包括验证组……但我不关心这一点,也不关心2.8.10+中的错误。)

我不能完全重现您的问题。我有一个v2.8.8应用程序。在非常简单的控制器操作中,我尝试了:
$form->submit([])
HandlerRequest
之后,但在
createView
之前。呈现的表单显示所有验证错误。然后我升级到v2.8.11,行为保持不变。谢谢@Yoshi我想我首先要弄清楚的是,是否有更好/正确的方法来显示验证错误。如果没有,那么我将尝试调试2.8.10+中的表单问题(表单也有验证组…因此不太容易解释)。上述方法是“最佳”方法吗?我不知道,这可能是最快的方法,虽然不是最具语义的方法。如果我想清楚地表明强制执行错误是有意的,我可能会从研究
submit
方法开始。但老实说,如果这是您的代码中唯一需要这种行为的地方,只需留下一条注释来表示您的意图。它已经通过一个方法调用完成了您想要的一切。@Yoshi我已经解决了这个问题(poss bug),并创建了另一个带有一些细节的问题(在我提交bug/问题之前):
$entity // passed in as param on action method
$form = $this->createForm(..., $entity);
$csrfToken = 'random_string'; // retrieved from FormConfigInterface
// perform the submit but don't clear missing
$form->submit(['_token' => $csrfToken], false);