2015-02-07 118 views
2

在媒体实体中实现__clone()方法时,我需要获取文件的绝对路径才能够创建文件本身的副本。我一直在寻找很长一段时间,我还没有找到任何文件来获得这个。有任何想法吗?Symfony 2获得实体类中的Sonata媒体文件路径

这是我需要的文件路径的__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()); 
     } 
} 

回答

3

我不认为这是有可能不给实体类太多的责任,因为你不能告诉绝对路径名称('sonata.media.manager.media','sonata.media.provider.image'或'sonata.media.twig.extension')。

正确的路要走在控制器中构建一个克隆功能。控制器可以拥有所有的魔法(服务和实体管理者)为你做克隆。

查看this stackoverflow question为例。

相关问题