Можно ли проверить, было ли изменено поле на preUpdate
крюк? Я ищу что-то вроде preUpdate
hasChangedField($fieldName)
Функциональность доктрины. Есть идеи?SonataAdminBundle - preUpdate
4
A
ответ
11
Этот вопрос немного похож на this one
Ваше решение является просто сравнить поле старого объекта с новым и увидеть, где она отличается.
Так, например:
public function preUpdate($newObject)
{
$em = $this->getModelManager()->getEntityManager($this->getClass());
$originalObject = $em->getUnitOfWork()->getOriginalEntityData($newObject);
if ($newObject->getSomeField() !== $originalObject['fieldName']) {
// Field has been changed
}
}
0
Для меня лучший подход это в Sonata Admin:
$newField = $this->getForm()->get('field')->getData();
$oldField = $this->getForm()->get('field')->getConfig()->getData();
Вы не должны использовать единицу работы, если нет никакой возможности. Кроме того, если у вас есть не отображаемое поле, вы не можете получить к нему доступ объектом объекта.
В нормальном случае доктрина Lyfe цикла, лучшим вариантом является Doctrine preupdate event doc
Смежные вопросы
- 1. SonataAdminBundle
- 2. SonataAdminBundle embebed form validation error
- 3. Загрузка файла SonataAdminBundle: Ошибка
- 4. SonataAdminBundle - конфигурация
- 5. SonataAdminBundle datepicker
- 6. SonataAdminBundle файлов uplaod в/TMP
- 7. Как загрузить в Blog Entity в SonataAdminBundle?
- 8. JPA @PreUpdate не называется
- 9. @PreUpdate на OneToMany?
- 10. @PreUpdate triggered on select
- 11. Symfony2 Event Listener preUpdate
- 12. PreUpdate не вызвал
- 13. Eventlistener preUpdate embedded Form
- 14. SQLite preupdate крюк Реентрантная
- 15. PreUpdate entity symfony LifecycleCallbacks
- 16. PreUpdate in Hibernate-Envers
- 17. пользовательское действие в SonataAdminBundle
- 18. SonataAdminBundle: DateTime picker format
- 19. Тип массива в SonataAdminBundle
- 20. query_builder на sonataAdminBundle игнорируется
- 21. SonataAdminBundle set NULL $ formMapper
- 22. SonataAdminBundle для пользователей login
- 23. Настройка SonataAdminBundle base_edit_form.html.twig
- 24. SonataAdminBundle - собственные взгляды?
- 25. SonataAdminBundle без расширения аэроропорта
- 26. SonataAdminBundle new block type
- 27. Symfony2 SonataAdminBundle logout
- 28. Как настроить форму SonataAdminBundle
- 29. ACL + SonataAdminBundle + SonataUserBundle
- 30. SonataAdminBundle вопрос наследования
Thx! Это было полезно. Но этот случай должен работать для mongoDB ('getOriginalDocumentData'), для mysql я использовал' getOriginalEntityData'. Кроме того, функция возвращает массив, поэтому мне пришлось ссылаться на '$ originalObject ['fieldName']'. Было бы здорово, если бы вы могли обновить свой ответ. – NHG
Вы были правы, я исправил свой ответ. Рад, что смог помочь! –
Отличный ответ, но есть ли способ сделать это с помощью postUpdate()? – vimuth