Добрый день, в очередной раз столкнулся с такой вот проблемой:
Разработчик который работал до меня, предпочитал Symfony, а я как таково на нем ничего серъезного не делал, только на Laravel / CodeIgniter, и ориентироваться мне немного сложно (нужно время). В общем стоит Bundle (Sonata Admin Bundle). Изображение подгружается через iPHPBundle (iphp filestore bundle). Пришла следующая задача: прикрутить CROP для вырезки изображения, я нашел бандл (Comur Image Bundle), мне удалось его прикрутить, он загружает изображения, но вот сохранить не удаеться, дело в том что iphp сохраняет все как объект под `serialize()`. А вот Comur как раз сохраняет только название файла. Изменить тип поля не удасться, потому-что через iPHP грузиться и видео и т.п. как объяснили мы через него получаем время видео, размер фото и т.п.
Как сохранить закропленную фотографию через Comur?
protected function configureFormFields(FormMapper $formMapper)
{
$em = $this->getModelManager()->getEntityManager($this->getSubject());
$searchTagsTransformer = new SearchTagsToStringTransformer($em);
$formMapper
->add('title',...
//->add('imageFile', 'iphp_file', array('required' => false, 'label' => 'Изображение'))
->add('imageFile', 'comur_image', array(
'uploadConfig' => array(
'uploadRoute' => 'comur_api_upload', //optional
'uploadUrl' => $this->getRoot()->getSubject()->getUploadRootDir(), // required - see explanation below (you can also put just a dir path)
'webDir' => $this->getRoot()->getSubject()->getUploadDir(), // required - see explanation below (you can also put just a dir path)
'fileExt' => '*.jpg;*.gif;*.png;*.jpeg', //optional
'libraryDir' => null, //optional
'libraryRoute' => 'comur_api_image_library', //optional
'showLibrary' => true, //optional
'saveOriginal' => 'originalImage' //optional
),
'cropConfig' => array(
'minWidth' => 588,
'minHeight' => 300,
'aspectRatio' => true, //optional
'cropRoute' => 'comur_api_crop', //optional
'forceResize' => false, //optional
'thumbs' => array( //optional
array(
'maxWidth' => 180,
'maxHeight' => 400,
'useAsFieldImage' => true //optional
)
)
),
'required' => false, 'label' => 'Изображение'
))
->add('...
}
Вот тут при сохранении происходит следущее:
Comur возвращает массив
[imageFile] => cropped/123.jpg
[originalFile] => 123.jpg
При сохранении ругается доктрина что ей нужен "string" а не массив, и как правильно этот "string" должен храниться как "serialize" того самого iPHP.
/**
* @ORM\Column(type="array", nullable=true)
* @FileStore\UploadableField(mapping = "publication_preview_image")
* @Assert\Image(mimeTypesMessage="Загружаемый формат изображения не поддерживается")
*/
protected $imageFile;
/**
* @ORM\Column(type="array", nullable=true)
* @FileStore\UploadableField(mapping = "publication_preview_image")
*/
protected $originalImage;
Я надеюсь что найдеться хоть кто-нибудь кто поможет решить эту проблему :(