2015-02-07 3 views
2

При реализации метода __clone() в медиа-объекте мне нужно получить абсолютный путь к файлу, чтобы иметь возможность сделать копию самого файла. Я долго искал, и я не нашел никакой документации, чтобы получить это. Есть идеи?Symfony 2 получает путь к файлу медиафайла Sonata в классе Entity

Вот это метод __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

Я не думаю, что это возможно, не давая класс Entity к очень обязанностей, так как вы не можете сказать, абсолютное («sonata.media.manager.media», «sonata.media.provider.image»).

Правильный способ - это построить функцию клонирования в контроллер. Контроллер может иметь все волшебство (службы и сущ.), Чтобы сделать клонирование для вас.

См. Например, this stackoverflow question.

 Смежные вопросы

  • Нет связанных вопросов^_^