Symfony 2获得实体类中的Sonata媒体文件路径
问题描述:
在媒体实体中实现__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());
}
}
答
我不认为这是有可能不给实体类太多的责任,因为你不能告诉绝对路径名称('sonata.media.manager.media','sonata.media.provider.image'或'sonata.media.twig.extension')。
正确的路要走在控制器中构建一个克隆功能。控制器可以拥有所有的魔法(服务和实体管理者)为你做克隆。