Bonjour a tous,

Ma question peux vous paraître fort simple mais après avoir pas mal cherché, je n'ai malgré tout rien trouvé de concluent comme solution...

Je possède un formulaire entièrement construit à la main:
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
 
class AdminProduitType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name', 'text')
                ->add('description', 'textarea', array('required' => false))
                ...
                ->add('photo0', 'file', array('required' => false))
                ->add('photo1', 'file', array('required' => false))
                ->add('photo2', 'file', array('required' => false))
                ->add('photo3', 'file', array('required' => false))
                ->add('photo4', 'file', array('required' => false))
                ...;
    }
}
voici l'action de mon controler:
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
42
43
44
45
 
public function produitnewAction(Request $request)
    {
        $request = $this->getRequest();
 
        //On genere le formulaire d'apres le TYPE
        $form = $this->createForm(new AdminProduitType());
 
        //Si le formulaire a été transmis
        if ($request->getMethod() == 'POST')
        {
            $form->bindRequest($request);
 
            //si le formulaire est valide
            if ($form->isValid()) {
                //On prépare la requete
                $em = $this->getDoctrine()->getManager();
 
                //On recupere les donnees
                $data = $form->getData();
 
                //On récupère les infos
                $Shopproduit = new ShopProduit();
                $Shopproduit->setName($data['name']);
                $Shopproduit->setDescription($data['description']);
 
                //on recupère les photos
                ????????????????????????????????????
 
                //On persiste shopproduit
                $em->persist($Shopproduit);
 
                //On envoie tout dans la db
                $em->flush();
 
                //on prépare le FLASHTEXT
                $this->get('session')->setFlash('flashtext', 'Produit créé avec id '.$Shopproduit->getId().' !');
 
                //On redirige vers la liste des produits
                return $this->redirect($this->generateUrl('KevinrolinbeShopBundle_AdminProduit'));
            }
        }
 
        return $this->render('KevinrolinbeShopBundle:Admin:adminProduitNew.html.twig', array('form' => $form->createView() ));
    }//End produitnewAction
En lisant la doc ( http://symfony.com/fr/doc/current/re...ypes/file.html ) je suis arrivé à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
                $extension = $data['photo0']->guessExtension();
                if (!$extension) {
                    // l'extension n'a pas été trouvée
                    $extension = 'bin';
                }
                $idph = 1; //uniquement pour l'exemple
                $data['photo0']->move($dir, 'produit-'.$idph.'-photo0.'.$extension);
 
                $shopphoto = new ShopPhoto();
                $shopphoto->setName('produit-'.$idph.'-photo0.'.$extension);
                $shopphoto->setPath($dir.'produit-'.$idph.'-photo0.'.$extension);
                $em->persist($shopphoto);
Mais il y a une chose qui m’échappe totalement c'est la variable $dir. que dois-je lui faire donner comme valeur?
Mais aussi est ce que ce raisonnement est logique?
Il est prévu que je répète ce code 5 fois afin d'upload mes 5 photos (en rajoutant bien entendu une vérification afin de m'assurer que le champ n'est pas vide.)

Y aurait il un bundle me permettant de me facilité la vie ou vaut-il mieux rester sur cette idée?

Merci à vous,
Kevin