FORM_EVENT的原始数据?

时间:2016-02-18 10:48:59

标签: symfony symfony-forms

FORM_EVENT可以访问原始值吗?因为在表单中,为了添加和编辑项目,我输入了一个日期并检查它是否大于当前日期。编辑时,我必须检查日期是否大于当前日期或等于最初发送的日期。 $事件 - > getData()(使用addEventListener)返回更改的数据:)

1 个答案:

答案 0 :(得分:0)

您可以使用Doctrine UnitOfWork查找对象所做的差异。 为此,您需要访问EntityManager。

您可以获取原始对象,然后检查日期是否有效:

$uow = $entityManager->getUnitOfWork();
$uow->getUnitOfWork()
  ->getOriginalEntityData($object);

或者您可以获得已更改的所有属性的列表:

$uow = $entityManager->getUnitOfWork();
$changeset = $uow->getEntityChangeSet($object);

在大多数formEventListeners中,已经计算了更改,如果不是这种情况,您可以在获取实体更改集之前尝试运行$uow->computeChangeSets();。 但是一定不要再运行两次,因为它可能会破坏已经存在的变化。