public static function manageEmbeddedImageAdmins(Admin $admin, $subject) { // Cycle through each field foreach ($admin->getFormFieldDescriptions() as $fieldName => $fieldDescription) { // detect embedded Admins that manage Images if ($fieldDescription->getType() === 'sonata_type_admin' && ($associationMapping = $fieldDescription->getAssociationMapping()) && $associationMapping['targetEntity'] === 'ZenSide\\SonataImageBundle\\Entity\\Image') { $getter = 'get' . $fieldName; $setter = 'set' . $fieldName; /** @var Image $image */ $image = $subject->{$getter}(); if ($image) { if ($image->getFile()) { // update the Image to trigger file management $image->refreshUpdated(); } elseif (!$image->getFile() && !$image->getFilename()) { // prevent Sf/Sonata trying to create and persist an empty Image $subject->{$setter}(null); } } } } }