【问题标题】:Symfony 2 get Sonata media file path in Entity classSymfony 2在实体类中获取奏鸣曲媒体文件路径
【发布时间】:2015-04-07 12:47:39
【问题描述】:

在媒体实体中实现 __clone() 方法时,我需要获取文件的绝对路径才能复制文件本身。我已经搜索了很长时间,但我没有找到任何文档来获得这个。有什么想法吗?

这里是 __clone() 方法,我需要文件路径:

// Norwalk\StoreBundle\Entity\ProductHasMedia

public function __clone() {
        if ($this->id) {
            $this->media = clone $this->media;
            $this->media->setProviderReference('clone_'.$this->media->getProviderReference());
            $this->media->setName('clone_'.$this->media->getName());
            $providerMeta = array('filename' => $this->media->getName());
            $this->media->setProviderMetadata($providerMeta);
            // Clone the physical image file too
            $fs = new Filesystem();
            $fs->copy( "original_image_path/".$this->media->getName(), "original_image_path/"."clone_".$this->media->getName());
        }
}

【问题讨论】:

    标签: symfony sonata-admin sonata-media-bundle sonata


    【解决方案1】:

    我认为不给 Entity 类赋予太多责任是不可能的,因为如果没有一些服务('sonata.media.manager.media'、'sonata.media.provider .image' 或 'sonata.media.twig.extension')..

    正确的做法是将克隆功能构建到控制器中。控制器可以拥有所有魔法(服务和实体管理器)为您进行克隆。

    有关示例,请参阅 this stackoverflow question

    【讨论】:

      猜你喜欢
      • 2017-11-17
      • 2013-10-02
      • 2013-12-04
      • 2017-09-17
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 2017-04-13
      • 2016-02-08
      相关资源
      最近更新 更多