<?php
namespace App\EventSubscriber;
use App\Entity\Main\Blog;
use App\Service\ImagesService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
class PostImageSubscriber implements EventSubscriberInterface
{
private $imagesService;
public function __construct(ImagesService $imagesService)
{
$this->imagesService = $imagesService;
}
public static function getSubscribedEvents()
{
return array(
'easy_admin.pre_persist' => array('postImage'),
);
}
function postImage(GenericEvent $event)
{
$result = $event->getSubject();
$method = $event->getArgument('request')->getMethod();
//Проверяем на тип сущности
if ( ! $result instanceof Blog || $method !== Request::METHOD_POST) {
return;
}
//получаем все переданные файлы
$files = $event->getArgument('request')->files->all();
//Если есть картинка блога и она нужного типа - сохраняем
if (isset($files['blog']['image']) and $files['blog']['image'] instanceof UploadedFile) {
$url = $this->imagesService->saveToDisk($files['blog']['image']);
$result->setImage($url);
}
}
}