为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信