symfony - Sonata media validation at admin -


i'm trying validate image. saw answer @ sonata media: file not found

how validate image (width , height). need on that. there no proper doc in net.

to validate image dimensions using sonata media need override sonata media's imageprovider class, sonata uses class handle image manipulation.if have extended bundle of sonata media bundle in services.yml file can define own provider below ,make sure yml file included in main config.yml

parameters:     sonata.media.provider.file.class: application\sonata\mediabundle\provider\imageprovider 

now create provider , extend sonata media's imageprovider overrider validate() function , define own validation or can override buildcreateform()/buildeditform() , define asserts binarycontent field

namespace application\sonata\mediabundle\provider;

//... other uses classes use sonata\mediabundle\provider\imageprovider baseprovider;  class imageprovider extends baseprovider {      public function __construct($name, filesystem $filesystem, cdninterface $cdn, generatorinterface $pathgenerator, thumbnailinterface $thumbnail, array $allowedextensions = array(), array $allowedmimetypes = array(), metadatabuilderinterface $metadata = null)     {         parent::__construct($name, $filesystem, $cdn, $pathgenerator, $thumbnail);          $this->allowedextensions = $allowedextensions;         $this->allowedmimetypes = $allowedmimetypes;         $this->metadata = $metadata;     }      /**      * {@inheritdoc}      */     public function validate(errorelement $errorelement, mediainterface $media)     {         if (!$media->getbinarycontent() instanceof \splfileinfo) {             return;         }          if ($media->getbinarycontent() instanceof uploadedfile) {             $filename = $media->getbinarycontent()->getclientoriginalname();         } elseif ($media->getbinarycontent() instanceof file) {             $filename = $media->getbinarycontent()->getfilename();         } else {             throw new \runtimeexception(sprintf('invalid binary content type: %s', get_class($media->getbinarycontent())));         }          if (!in_array(strtolower(pathinfo($filename, pathinfo_extension)), $this->allowedextensions)) {             $errorelement                 ->with('binarycontent')                 ->addviolation('invalid extensions')                 ->end();         }          if (!in_array($media->getbinarycontent()->getmimetype(), $this->allowedmimetypes)) {             $errorelement                 ->with('binarycontent')                 ->addviolation('invalid mime type : ' . $media->getbinarycontent()->getmimetype())                 ->end();         }          if ($media->getwidth() > '1280' || $media->getheight() > 1280) {             $errorelement                 ->with('binarycontent')                 ->addviolation('invalid file dimension : please upload 1280px * (1280px) image')                 ->end();         }     }  } 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -