SonataAdminBundle-检查“ preupdate”挂钩中的更改



是否可以检查preUpdate钩上是否更改字段?我正在寻找诸如preUpdate hasChangedField($fieldName)学说功能之类的东西。有什么想法吗?

这个问题与此问题有点相似

您的解决方案只是将旧对象的字段与新物体的区域进行比较,并查看其不同的位置。

所以:

public function preUpdate($newObject)
{
    $em = $this->getModelManager()->getEntityManager($this->getClass());
    $originalObject = $em->getUnitOfWork()->getOriginalEntityData($newObject);
    if ($newObject->getSomeField() !== $originalObject['fieldName']) {
        // Field has been changed
    }
}

对我来说,最好的方法是在奏鸣曲中:

$newField = $this->getForm()->get('field')->getData();
$oldField = $this->getForm()->get('field')->getConfig()->getData();

除非没有选择,否则您不应使用单位。另外,如果您没有映射的字段,则无法通过实体对象访问它。

在普通学说的莱夫周期活动中,最好的选择是学说predate event doc

相关内容

  • 没有找到相关文章

最新更新