示例#1
0
 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);
                 }
             }
         }
     }
 }