Upload de fichier sans passer par l'entity
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:
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:
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:
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