Bonjour à tous !

Alors j'ai un petit problème en PHP (et symfony2). Voilà j'ai un objet en base qui est un Album. Mon album je le récupère de la base et il a des photos (10 photos).

Pour faire mon formulaire avec Symfony2, je passe mon objet à ma vue. J'affiche les photos déjà en base, ensuite je mets des photos dans mon formulaire, et je save.

Le problème arrive à ce moment là. En fait mes entrées dans le formulaire écrase mes anciennes photos. Et j'aimerai faire ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
En base 		Dans le form	Résultat 
vache.jpg		pingoin.jpg		pingoin.jpg 
NULL		        tulipe.jpg		tulipe.jpg 
carotte.jpg		NULL		        carrotte.jpg
Pour palier ce problème, je fait un deuxième objet Album, en faisant un clone de ma première entité. Mais quand je faire ça : $this->oldAlbum->getPhotosUser() === $album->getPhotosUser() ça me retourne true

Je donne un peu de code :

Mon controller :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
public function photoAction()
    {
        if(!$this->get('security.context')->isGranted('ROLE_USER'))
        {
            throw new AccessDeniedHttpException('Accès limité aux personnes inscritent au site');
        }
        else
        {            
            $entity  = new Album();
            $oldAlbum  = new Album();
            $userManager = $this->get('fos_user.user_manager');
            $userCurrent = $this->container->get('security.context')->getToken()->getUser();
 
            $user = $userManager->findUserBy(array('username' => $userCurrent));
 
            if($user->getAlbum() != null)
            {
                $entity = $user->getAlbum();
                $oldAlbum = clone $entity;
            }        
 
            $form = $this->createForm(new AlbumType, $entity);
 
            $formHandler = new PhotoHandler($form, 
                                $this->get('request'), 
                                $userManager,   
                                $user,
                                $oldAlbum);    
 
            if ($formHandler->process()) 
            {
                return $this->container->get('templating')
                ->renderResponse('MonSitePhotoBundle:SwitchBoard:photo.html.'.$this->container
                ->getParameter('fos_user.template.engine'), array('user' => $user, 'form' => $form->createView()));
            }
 
                return $this->container->get('templating')
                ->renderResponse('MonSitePhotoBundle:SwitchBoard:photo.html.'.$this->container
                ->getParameter('fos_user.template.engine'), array('user' => $user, 'form' => $form->createView()));
        }
Mon handler :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
protected function onSuccess(Album $album)
    {                
        $photoUsersInDataBase = $this->oldAlbum->getPhotosUser();
        $photoUsersInForm = $album->getPhotosUser();
 
        var_dump($photoUsersInDataBase[0]->getImage() != null); // true
        var_dump($photoUsersInForm[0]->getImage() != null); // true
        var_dump($photoUsersInDataBase[0] === $photoUsersInForm[0]); // true  
 
        for ($i = 0; $i < $photoUsersInForm->count(); $i++) 
        {       
 
            if($photoUsersInDataBase[$i]->getImage() != null 
                && $photoUsersInForm[$i]->getImage() != null 
                && $photoUsersInDataBase[$i] !== $photoUsersInForm[$i])
                {
                    var_dump("Dans la base et dans le form ");
                    //$photoUsersInForm[$i]->setAlbum($album);
                    $album->addPhotosUser($photoUsersInForm[$i]);
                    $photoUsersInForm[$i]->uploadImage();
                }
                else if($photoUsersInDataBase[$i]->getImage() != null && $photoUsersInForm[$i]->getImage() == null)
                {
                    var_dump("Dans la base ");
                    $album->addPhotosUser($photoUsersInDataBase[$i]);
                    //$photoUsersInDataBase[$i]->setAlbum($album);
                }
                else if($photoUsersInForm[$i]->getImage() != null && $photoUsersInDataBase[$i]->getImage() != null)
                {
                    var_dump("Dans le form ");
                    $photoUsersInForm[$i]->setAlbum($album);
                    $album->addPhotosUser($photoUsersInForm[$i]);
                    $photoUsersInForm[$i]->uploadImage();
                }
        }
 
        $this->user->setAlbum($album);
        $this->em->updateUser($this->user);
    }
Le problème est sur le clone, je pense que ça ne fonctionne pas.

Merci de votre aide !