Я использую VichUploader для управления загрузкой файлов в приложении Symfony 3. Теперь мне интересно, как управлять удалением файлов/объектов?Symfony/VichUploaderBundle: Удалить объект
Выдержка из приложения/Config/config.yml:
vich_uploader:
db_driver: orm
mappings:
upload_artists:
uri_prefix: /upload/artists
upload_destination: %kernel.root_dir%/../web/upload/artists
directory_namer: artist_directory_namer
namer: vich_uploader.namer_uniqid
inject_on_load: false
delete_on_update: true
delete_on_remove: true
Отрывок из Entity:
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity
* @ORM\Table(name="image_file")
* @Vich\Uploadable
*/
class ImageFile {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*
*/
private $title;
/**
* NOTE: This is not a mapped field of entity metadata, just a simple property.
*
* @Vich\UploadableField(mapping="upload_artists", fileNameProperty="imageName")
*
* @var File
*/
private $imageFile;
/**
* @ORM\Column(type="string", length=255)
*
* @var string
*/
private $imageName;
/**
* @ORM\Column(type="datetime")
*
* @var \DateTime
*/
private $updatedAt;
/**
* @ORM\ManyToOne(targetEntity="Artist")
* @ORM\JoinColumn(name="artist_id", referencedColumnName="id")
*/
private $artist;
/**
* @ORM\Column(type="boolean")
*/
private $deleted;
Отрывок из контроллера:
namespace Acme\Bundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Acme\Bundle\Entity\Artist;
use Acme\Bundle\Entity\ImageFile;
class ArtistPhotoController extends Controller {
// ...
public function deleteDisabledAction($id = null) {
$artist = $this->getDoctrine()
->getRepository('Bundle:Artist')
->find($id)
;
$repository = $this->getDoctrine()->getRepository('Bundle:ImageFile');
$photosDisabled = $repository->findBy(array('artist' => $artist, 'application' => $this->application, 'deleted' => 1), array('updatedAt' => 'DESC'));
$counter = 0;
foreach ($photosDisabled as $disabled) {
if($disabled->remove()) {
$counter++;
}
}
if ($counter > 0) {
$this->addFlash(
'success',
$counter.' items successfully deleted!'
);
}
}
}
... $ disabled-> remove() 'был просто тестом и приводит к сообщению об ошибке ("undefined method named remove"). Как правильно удалить/удалить файл/объект, управляемый VichUploader? Любые намеки? Спасибо заранее!
Спасибо большое - это решило мою проблему! Я новичок в Symfony и не придумал идею взглянуть на учение, а не на документы vichuploader. – Pixelrocker