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:
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 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)) ...; } }
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
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
Mais il y a une chose qui m’échappe totalement c'est la variable $dir. que dois-je lui faire donner comme valeur?
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 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
Partager