我在编辑配置文件树枝模板上添加了一个VichImageType字段...所以我试图使用vich_uploader.pre_upload作为事件检查图像尺寸。
在我的班级中,我得到了图像属性,如果它们的尺寸不够大,我试图阻止传播并向树枝模板闪现消息,但是,我不知道为什么,事件继续传播并重定向到fos_user_profile_show显示图像设置。此外,我试图再次重定向到fos_user_profile_edit但我不能使用$ event因为" Vich \ UploaderBundle \ Event \ Event"没有实现setController()。怎么能实现这个目标?
这是Listener类的方法:
namespace BackendBundle\EventListener;
use Vich\UploaderBundle\Event\Event;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\RouterInterface;
class ComprobarDimensionesDeImagen
{
private $requestStack;
private $router;
public function __construct(RequestStack $requestStack, RouterInterface $router)
{
$this->requestStack = $requestStack;
$this->router = $router;
}
public function onVichUploaderPreUpload(Event $event)
{
$object = $event->getObject();
$mapping = $event->getMapping();
$imagen = getimagesize($object->getImageFile());
if (250 > $imagen[0] || 250 > imagen[1]) {
$request = $this->requestStack->getCurrentRequest();
$session = $request->getSession();
$event->stopPropagation();
$session->getFlashBag()->add('error', "Minimum dimensions: 250x250 \n");
$url = $this->router->generate('fos_user_profile_edit');
/*
* Testing different methods of redirect
*
* $response = new RedirectResponse($url);
* $event->setResponse($response);
*/
$event->setController(function() use ($request) {
return new RedirectResponse($url);
});
}
}
}
当我再次编辑配置文件时,我可以在VichImageType字段中看到flash消息和图像设置(我没想到停止传播)。我们非常欢迎任何帮助。
已解决:在我的Entity类中使用@Assert \ Image进行了验证。没有听众需要的服务