Symfony2:通过Doctrine上传文件不会触发PrePersist/PreUpdate生命周期事件

mys*_*ack 2 symfony doctrine-orm

我尝试通过doctrine/lifecycle回调实现文件上传,如下所述:

http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html#using-lifecycle-callbacks

到目前为止它可以工作,但PrePersist/PreUpdate事件没有被触发,函数"preUpload"没有被调用.正确调用由其他生命周期事件触发的"upload"和"removeUpload"等函数.

有没有人知道为什么事件没有被解雇或解决这个问题?

谢谢

phi*_*ann 10

我有另一个解决这个问题的方法:

我的实体有一个字段"updatedAt",它是上次更新的时间戳.由于这个字段无论如何都被设置(通过Gedmo的时间戳扩展)我只是使用这个字段来欺骗教义,使其相信权利被更新了.在我持久化实体之前,我手动设置此字段

if( $editForm['file']->getData() )
    $entity->setUpdateAt(new \DateTime());
Run Code Online (Sandbox Code Playgroud)

这样实体就会被持久化(因为它已经改变了),并且正确调用了preUpdate和postUpdate函数.当然,这仅适用于您的实体具有可以像这样利用的字段.