2013-11-15 5 views
0

Symfony FormsУдалить изображение в базе данных удалить symfony2

У меня все работает правильно. Единственное, что я не уверен в том, как удалить изображение, загруженное в папке дата загрузки, когда соответствующий элемент в базе данных удаляется.

Я на самом деле просто нужна идея о том, как это сделать, чтобы получить движется в правильном направлении.

Заранее спасибо.

ответ

1

Вы оба правильно я сделал уаг дамп на код, который был в сущности ...

/** 
* @ORM\PostRemove 
*/ 
public function removeUpload() 
{ 
    if(file_exists($file)) { 
     if ($file = $this->getAbsolutePath()) { 
      unlink($file); 
     } 
    }  
} 

, если файл существует $ файла показывает пустой переменной. В загрузке она сохраняет переменную как $ логотипе

Я изменил код следующего

/** 
* @ORM\PostRemove 
*/ 
public function removeUpload() { 
    // ** Original Code used file but logo has the name in it. 

    if(file_exists($this->getAbsolutePath())) { 
     if ($this->getUploadRootDir() . $this->logo = $this->getAbsolutePath()) { 
      unlink($this->logo); 
     } 
    } 
} 

Теперь удаляет файл правильно. Спасибо вам обоим.

0

В вашем удалении действия, вы должны удалить файл вручную. Я предполагаю, что вы будете хранить путь к файлу в базе данных, так что это должно быть относительно легко.

$path = ....//query db to get the path to the file 
if($path){ 
    unlink($path); 
} 

//now you can delete the record in the database 

См php docs для удаления файла

0

То, что вы, вероятно, искали являются Doctrine2 Lifecycles. Просто добавьте метод к вашему лицу:

/** 
* @ORM\PreRemove 
*/ 
public function deleteImage() 
{ 
    // unlink your image and what not. 
} 

Также не забудьте @ORM\HasLifecycleCallbacks() аннотации для вашего класса сущностей.

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