2016-02-18 4 views
0

Возможно ли с помощью FORM_EVENT получить исходные значения? Поскольку в форме, для добавления и редактирования элемента, я ввел дату и проверил, что она больше текущей. При редактировании я должен проверить, что дата больше текущей даты ИЛИ равна исходной отправке даты. $ Event-> getData() (с addEventListener) возвращает данные, измененные :)Исходные данные с FORM_EVENT?

+0

Если форма напрямую обрабатывает объект, значения уже будут изменены. Однако вы можете использовать не отображаемое поле для новой даты и применять только поданное значение, если ваши условия выполнены. – Yoshi

ответ

0

Вы можете использовать Doctrine UnitOfWork, чтобы найти различия, которые сделаны для объекта. Для этого вам необходим доступ к EntityManager.

Вы можете получить исходный объект, а затем проверить, если дата является действительным:

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

Или вы можете получить список всех свойств, которые изменились:

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

В большинстве formEventListeners , изменения уже вычислены, если это не так, вы можете попробовать запустить $uow->computeChangeSets(); перед тем, как получить набор изменений сущности. Но будьте уверены, что не выполняйте это дважды, так как это может испортить изменения, которые уже есть.

Смежные вопросы