Php 如何正确删除使用sonata media bundle上传的所有图像

Php 如何正确删除使用sonata media bundle上传的所有图像,php,symfony,sonata-media-bundle,Php,Symfony,Sonata Media Bundle,我已经上传了一些图像使用索纳塔媒体包,建议 $media=新媒体; $media->setBinaryContent($file->getRealPath()); $media->setContext('myContext'); $media->setProviderName('sonata.media.provider.image'); $mediaManager->save($media); 前面的代码正确创建媒体所有文件(根据上下文配置)和数据库注册表。现在我所做的删除媒体的操作如下所示

我已经上传了一些图像使用索纳塔媒体包,建议

$media=新媒体;
$media->setBinaryContent($file->getRealPath());
$media->setContext('myContext');
$media->setProviderName('sonata.media.provider.image');
$mediaManager->save($media);
前面的代码正确创建媒体所有文件(根据上下文配置)和数据库注册表。现在我所做的删除媒体的操作如下所示:

$media = $mediaManager->findOneBy(array('id' => $id));
$mediaManager->delete($media)
它会正确地从数据库中删除媒体数据,但不会从配置的文件系统中删除,仍有一些图像与上载的媒体关联。我计划使用S3文件系统,所以我需要删除所有使用相同框架的文件

我的奏鸣曲配置中最相关的配置(也使用建议的配置)如下所示:

$media = $mediaManager->findOneBy(array('id' => $id));
$mediaManager->delete($media)

索纳塔媒体:
默认上下文:默认
db_驱动程序:条令_orm
类别:
媒体:MyApp\MediaBundle\Entity\media
图库:MyApp\MediaBundle\Entity\gallery
画廊有媒体:MyApp\MediaBundle\Entity\GalleryHasMedia
上下文:
违约:
供应商:
-sonata.media.provider.youtube
-sonata.media.provider.image
-sonata.media.provider.file
格式:
小:{宽度:200,质量:77}
myContext:
供应商:
-sonata.media.provider.image
格式:
正常:{宽度:350,质量:75}
tmb:{宽度:100,质量:75}
文件系统:
本地:
目录:%kernel.root\u dir%/../web/uploads/media
创建:false


提前感谢。

要正确删除与上传文件相关的所有媒体,必须使用适当的提供商:

来自索纳塔媒体

提供者类负责处理与媒体资产相关的常见事项:

  • 缩略图
  • 路径
  • 使用表单编辑媒体
  • 存储媒体信息(元数据)
所以代码看起来像: