Php Symfony2表单提交/验证后设置实体属性

Php Symfony2表单提交/验证后设置实体属性,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,我正在提交一份symfony2表格,如果某个实体的电子邮件字段未填写且该属性已提交为“true”,我想将该实体属性设置为false 我现在通过以下方式做到这一点: $myForm = $this->createForm(new FormType(), $myEntity); $myForm->handleRequest($request); if ($myForm->isValid()) { if (!$myEntity->getEmail()) {

我正在提交一份symfony2表格,如果某个实体的电子邮件字段未填写且该属性已提交为“true”,我想将该实体属性设置为false

我现在通过以下方式做到这一点:

$myForm = $this->createForm(new FormType(), $myEntity);

$myForm->handleRequest($request);
if ($myForm->isValid()) {
    if (!$myEntity->getEmail()) {
        $myEntity->setProperty(false);
    }
}
现在,当表单提交后显示时,我希望与属性对应的复选框被取消选中。但是表单中的属性复选框没有响应,它保持选中状态


有人知道如何正确地执行此操作吗?

我认为这是因为您的表单已绑定到实体。表单已获取实体的数据,并且在实体更改时不会更新。您可以通过以下方式直接在表单上操作:

$myForm['someProperty']->setData( false );

但我希望按照您的第一行再次完全重建表单是更好的做法。

谢谢您的回复!更改属性会直接引发异常:“您无法更改已提交表单的数据”,忘了提到我已经尝试过了。重建表单似乎有些过头了?我想这确实有些过头了,但主要的问题是,如果要重新渲染表单,将丢失您想要显示的任何错误状态。如果不是那样的话,我会忍受这种重复。看来
PRE_SUBMIT
form事件可能是最好的选择。我会更新我的答案,但我以前从未使用过。