Bonjour,

J'utilise CraueFormFlowBundle pour enregistrer une annonce en 2 étapes. Lors de la première étape, j'hydrate mon objet advert avec différents objets photo qui eux-mêmes sont hydratés avec un name, file, etc... Lorsque je fais un var_dump des photos en fin de traitement de soumission de la première étape, après même avoir appelé le formulaire pour hydrater la seconde,

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
 
...
        $flow->bind($advert);
 
        // form of the current step
        $form = $flow->createForm();
        if ($flow->isValid($form)) {
 
            $flow->saveCurrentStepData($form);
 
            if ($flow->nextStep()) {
...
                // form for the next step
                $form = $flow->createForm();
 
 
                var_dump($advert->getPhotos());
            }
...

celles-ci sont bien hydratées :

C:\cmder\roadtrip\src\Controller\RoadTripController.php:497:
object(Doctrine\Common\Collections\ArrayCollection)[1735]
private 'elements' =>
array (size=2)
1 =>
object(App\Entity\Photo)[1962]
private 'id' => null
private 'name' => string '2727a10887bfdc35330d13765ff9df00.png' (length=36)
private 'file' =>
object(Symfony\Component\HttpFoundation\File\UploadedFile)[62]
...
private 'advert' =>
object(App\Entity\Advert)[143]
...
private 'mainPhoto' => boolean true
2 =>
object(App\Entity\Photo)[1987]
private 'id' => null
private 'name' => string 'fd21031085caa730f185bb344c4614de.jpeg' (length=37)
private 'file' =>
object(Symfony\Component\HttpFoundation\File\UploadedFile)[33]
...
private 'advert' =>
object(App\Entity\Advert)[143]
...
private 'mainPhoto' => boolean false
Par contre, lorsque je fais un var_dump des photos en début de traitement de la soumission de la deuxième étape,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
...
Fin du traitement de la soumission de la première étape
                // form for the next step
                $form = $flow->createForm();
            } 
            else { 
Traitement de la soumission de la seconde étape                
 
                var_dump($advert->getPhotos());
j'ai trois photos au lieu de 2 et leurs attibuts sont à null :

C:\cmder\roadtrip\src\Controller\RoadTripController.php:499:
object(Doctrine\Common\Collections\ArrayCollection)[1739]
private 'elements' =>
array (size=3)
1 =>
object(App\Entity\Photo)[2005]
private 'id' => null
private 'name' => null
private 'file' => null
private 'advert' => null
private 'mainPhoto' => boolean true
2 =>
object(App\Entity\Photo)[2030]
private 'id' => null
private 'name' => null
private 'file' =>
object(Symfony\Component\HttpFoundation\File\UploadedFile)[799]
...
private 'advert' => null
private 'mainPhoto' => boolean false
3 =>
object(App\Entity\Photo)[2031]
private 'id' => null
private 'name' => null
private 'file' =>
object(Symfony\Component\HttpFoundation\File\UploadedFile)[753]
...
private 'advert' => null
private 'mainPhoto' => boolean false
Comme c'est le même template twig qui est appelé pour le rendu du premier ou du second formulaire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
...
       {% if flow.getCurrentStepNumber() == 1 %}
Affichage du premier formulaire
...
        {% endif %}
 
        {% if flow.getCurrentStepNumber() == 2 %}
Affichage du second formulaire
...
        {% endif %}
je lie ceci au fait que j'avais déjà constaté que si je revenais sur le premier formulaire via la flèche du navigateur alors que j'étais déjà sur le second, les champs liés aux photos (construits précédemment par du javascript) avaient disparus. Je pouvais les reconstruire via le bouton le permettant, mais je ne retrouvais pas les anciennes photos.

Quelqu'un aurait une idée pour m'éclairer?

Merci d'avance pour votre aide.

EDIT : est-ce que je dois envisager de passer par du Jquery et du session storage?