我正在使用這兩個庫來創(chuàng)建一個使用圖片的實體,vich/uploader-bundle并且我正在使用loggable提供的學(xué)說擴(kuò)展記錄實體更改歷史記錄,該擴(kuò)展stof/doctrine-extensions-bundle提供了atlantic18/doctrineextensions.所以問題來了:我有一個實體,它有一個 Vich 可上傳圖片字段,它使用的是帶有注釋的學(xué)說的 Gedmo 可記錄擴(kuò)展。/** * @var VersionedFile * * @ORM\Embedded(class="App\Entity\Embedded\VersionedFile") * * @Gedmo\Versioned() */private $picture;/** * @var File * * @Vich\UploadableField( * mapping="user_picture", * fileNameProperty="picture.name", * size="picture.size", * mimeType="picture.mimeType", * originalName="picture.originalName", * dimensions="picture.dimensions * ) */private $pictureFile;/** * @var DateTimeInterface * * @ORM\Column(type="datetime", nullable=true) * * @Gedmo\Versioned() */private $pictureUpdatedAt;嵌入式實體類App\Entity\Embedded\VersionedFile具有所有需要的注釋,以便使用可記錄的學(xué)說擴(kuò)展正確地進(jìn)行版本控制。// Not the whole code but just to get the idea for property versioning/** * @ORM\Column(name="name", nullable=true) * * @Gedmo\Versioned() */protected $name;現(xiàn)在的問題。當(dāng)我上傳文件并保留實體時,會發(fā)生以下事情。實體管理器持久化實體并調(diào)用 Gedmo 可記錄偵聽器 ( Gedmo\Loggable\LoggableListener)的 onFlush 方法。此偵聽器檢查更改并安排要插入的日志條目。問題是 VichUploader s upload listener (Vich\UploaderBundle\EventListener\Doctrine\UploadListener ) is called after the loggable listener and then the file is uploaded which changes the properties name, size, etc. The computed changes about name, size, etc. are not available in theLoggableListener` 因為它首先被調(diào)用,所以它不知道應(yīng)該插入它們。我是缺少一些配置還是我做錯了什么。這個想法是記錄對圖片所做的更改。目前在數(shù)據(jù)庫中,日志條目僅包含$pictureUpdatedAt字段。我調(diào)試了問題,我能看到的只是順序,并且LoggableListener方法getObjectChangeSetData中只返回$pictureUpdatedAt已更改的字段。我認(rèn)為這與 Embedded 實體沒有共同之處,因為我認(rèn)為聽眾的調(diào)用順序是問題所在。我的第一個想法是更改偵聽器的優(yōu)先級,但即使我這樣做,調(diào)用的順序也不會改變,主要是因為在onFlush調(diào)用時它會觸發(fā)preUpdate觸發(fā)UploadListener上傳程序包的方法。
- 1 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消