亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Symfony vich 上傳器和學說可記錄擴展問題?

Symfony vich 上傳器和學說可記錄擴展問題?

PHP
牛魔王的故事 2021-09-05 20:41:29
我正在使用這兩個庫來創建一個使用圖片的實體,vich/uploader-bundle并且我正在使用loggable提供的學說擴展記錄實體更改歷史記錄,該擴展stof/doctrine-extensions-bundle提供了atlantic18/doctrineextensions.所以問題來了:我有一個實體,它有一個 Vich 可上傳圖片字段,它使用的是帶有注釋的學說的 Gedmo 可記錄擴展。/** * @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具有所有需要的注釋,以便使用可記錄的學說擴展正確地進行版本控制。// Not the whole code but just to get the idea for property versioning/** * @ORM\Column(name="name", nullable=true) * * @Gedmo\Versioned() */protected $name;現在的問題。當我上傳文件并保留實體時,會發生以下事情。實體管理器持久化實體并調用 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` 因為它首先被調用,所以它不知道應該插入它們。我是缺少一些配置還是我做錯了什么。這個想法是記錄對圖片所做的更改。目前在數據庫中,日志條目僅包含$pictureUpdatedAt字段。我調試了問題,我能看到的只是順序,并且LoggableListener方法getObjectChangeSetData中只返回$pictureUpdatedAt已更改的字段。我認為這與 Embedded 實體沒有共同之處,因為我認為聽眾的調用順序是問題所在。我的第一個想法是更改偵聽器的優先級,但即使我這樣做,調用的順序也不會改變,主要是因為在onFlush調用時它會觸發preUpdate觸發UploadListener上傳程序包的方法。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號