Sonata admin bundle кастомизация CollectionType для загрузки фотографий

Пытаюсь добавить возможность добавления фотографий к Product при помощи CollectionType в SonataAdminBundle.

Кейс такой: администратор открывает страницу добавления Product, заполняет основные поля. Доходит до поля images, нажимает кнопку "добавить изображение" и вместо стандартного добавления полей collectionType должно появиться модальное окно с возможностью выбрать фото, обрезать(cropperjs) и отправить для сохранения на сервер. Сервер должен возвратить созданный связанный с Product объект Image который должен добавиться в основную форму Product.

Т.е. проблема пока одна, а именно есть ли в sonata admin возможность переопределить стандартное js поведение кнопки add формы collectionType(для возможности обрезать,загрузить фото и создать связанне с Product сущности Image)? Может есть альтернативный способ редактирования/загрузки фото в sonata admin нежели предложенный мной?
Немного кода:


/**
 * @ORM\Entity
 */
class Product
{
// code ...
    /**
     * @var Image[]
     * @ORM\ManyToMany(
     *     targetEntity="App\Entity\Domain\Media\Image"
     * )
     * @ORM\JoinTable(
     *     name="product_images",
     *     joinColumns={@ORM\JoinColumn(name="product_id",referencedColumnName="id")},
     *     inverseJoinColumns={@ORM\JoinColumn(name="image_id",referencedColumnName="id")}
     * )
     */
    private $images;
// code ...
}

связанные с Product фото:


/**
 * @ORM\Entity
 */
class Image extends Media
{
// code ...
}


/**
 * @ORM\Entity
 * @ORM\InheritanceType("SINGLE_TABLE")
 */
abstract class Media
{
    /**
     * @var string
     * @ORM\Column(type="string", nullable=false)
     */
    private $path;

// code ...
}

Класс администратора Product:


class ProductAdmin extends AbstractAdmin
{
    public function configureFormFields(FormMapper $form)
    {
        $form
//       тут конфигурация полей Product
                ->add('images', CollectionType::class, [
                    'type_options' => [
                        'delete' => true,
                    ]
                ])
    }
}

Ответы (0 шт):