solved : i forgot {{ form_enctype(form) }}

On 3 sep, 19:57, durium <[email protected]> wrote:
> Hi there!
> I'm having trouble with file upload...
> When i try the doc example in the acme demo Bundle it works but when i
> try to use it in my admin bundle i get the following error :
> [code]The file could not be found[/code]
> Although the file choosed in my computer was the same as in the
> demoBundle i even used the same entity (use Acme/demoBundle/entity/
> Document)
> I suspect that it is because for other entities i use yml... or maybe
> it is because there are other forms on the page...
> So here the code... (I've deleted parts that were not interesting such
> as validation of other forms)
> [code]<?php
>         //Doctrine
>         $em = $this->getDoctrine()->getEntityManager();
>         $products = $em->getRepository('AcmeAdminBundle:Upload')->findAll();
>
>         $cats = $em->getRepository('AcmeAdminBundle:UploadCat')->findAll();
>
>         //fin des requètes
>         $options = array();//utile pour les catégories du formulaire
> d'upload
>         foreach ($cats as $cat) {
>             $options[$cat->getId()] = $cat->getName();
>         }
>
>         //Forms
>             //Upload cat create
>             $catCreateObj = new UploadCat();
>             $catCreate = $this->createFormBuilder($catCreateObj)
>                     ->add('name')
>                     ->getForm();
>             $catUpdate = $this->createFormBuilder($catCreateObj)
>                     ->add('name')
>                     ->getForm();
>             $catsForm = array($catCreate->createView(), 
> $catUpdate->createView());
>
>             //Speedbarre
>             $speed = new Speedbarre();
>             $speed = $this->createFormBuilder($speed)
>                     ->add('name')
>                     ->add('link');
>             //Upload form
>             $document = new Document();
>             $form = $this->createFormBuilder($document)
>              ->add('file', 'file')
>                 ->add('visible', 'choice', array(
>                         'choices'   => array('' => 'Visible sur la
> gallerie du site','1' => 'Oui', '0' => 'Non')))
>                 ->add('name')
>                 ->add('cat', 'choice', array('choices' => $options))
>                 ->getForm();
>             //fin des formulaires
>             if( $request->getMethod() == 'POST' or 
> $this->getRequest()->attributes->get('action') == 'delete' and $request-
> >isXmlHttpRequest() !== TRUE )
>
>             {
>                 $action = $request->attributes->get('action');
>                 $em = $this->getDoctrine()->getEntityManager();
>                 $error = array(FALSE);
>                 switch($action){
>                     case 'new':
>                         $form->bindRequest($this->getRequest());
>                         if ($form->isValid()) {
>                             $em = $this->getDoctrine()-
>
> >getEntityManager();
>
>                             $document->upload();
>
>                             $em->persist($document);
>                             $em->flush();
>                             //$this->redirect($this->generateUrl('UploadA'));
>
>                         }else{ $error = $form;}
>                         break;
>                }
>                if(isset($good) != 0)return new 
> RedirectResponse($this->generateUrl('Admin_gallery'));
>
>                 else if($request->getMethod() == 'POST') {
>                     return 
> $this->render('AlshAdminBundle:Gallery:error.html.twig', array(
>
>                         'error'  => $error->createView()));
>                 }
>           }
> [/code]
> and here goes the document entity :
> [code]<?php
> // src/Acme/DemoBundle/Entity/Document.php
> namespace Acme\DemoBundle\Entity;
>
> use Doctrine\ORM\Mapping as ORM;
> use Symfony\Component\Validator\Constraints as Assert;
>
> /**
>  * @ORM\Entity
>  */
> class Document
> {
>     /**
>      * @var integer $id
>      *
>      * @ORM\Column(name="id", type="integer")
>      * @ORM\Id
>      * @ORM\GeneratedValue(strategy="AUTO")
>      */
>     private $id;
>
>     /**
>      * @var string $name
>      *
>      * @ORM\Column(name="name", type="string", length=255)
>      */
>     private $name;
>
>     /**
>      * @var string $type
>      *
>      * @ORM\Column(name="type", type="string", length=255)
>      * @Assert\MinLength(3)
>      */
>     private $type;
>
>     /**
>      * @var string $cat
>      *
>      * @ORM\Column(name="cat", type="string", length=255)
>      * @Assert\MaxLength(10)
>      */
>     private $cat;
>
>     /**
>      * @var boolean $visible
>      *
>      * @ORM\Column(name="visible", type="boolean")
>      */
>     private $visible;
>
>     /**
>      * @var string $path
>      *
>      * @ORM\Column(name="path", type="string", length=255)
>      */
>     private $path;
>
>     /**
>      * @Assert\File(maxSize="6000000")
>      */
>     public $file;
>
>     public function getAbsolutePath()
>     {
>         return null === $this->path ? null : 
> $this->getUploadRootDir().'/'.$this->path;
>
>     }
>
>     public function getWebPath()
>     {
>         return null === $this->path ? null : $this->getUploadDir().'/'.
> $this->path;
>     }
>
>     protected function getUploadRootDir()
>     {
>         // the absolute directory path where uploaded documents should
> be saved
>         return __DIR__.'/../../../../web/'.$this->getUploadDir();
>     }
>
>     protected function getUploadDir()
>     {
>         // get rid of the __DIR__ so it doesn't screw when displaying
> uploaded doc/image in the view.
>         return 'uploads/documents';
>     }
>     public function upload()
>     {
>         // the file property can be empty if the field is not required
>         if (null === $this->file) {
>             return;
>         }
>
>         // we use the original file name here but you should
>         // sanitize it at least to avoid any security issues
>
>         // move takes the target directory and then the target
> filename to move to
>         $this->file->move($this->getUploadRootDir(), $this->file-
>
> >getClientOriginalName());
>
>         // set the path property to the filename where you'ved saved
> the file
>         $this->setPath($this->file->getClientOriginalName());
>
>         // clean up the file property as you won't need it anymore
>         $this->file = null;
>     }
>     /**
>      * Get id
>      *
>      * @return integer
>      */
>     public function getId()
>     {
>         return $this->id;
>     }
>
>     /**
>      * Set name
>      *
>      * @param string $name
>      */
>     public function setName($name)
>     {
>         $this->name = $name;
>     }
>
>     /**
>      * Get name
>      *
>      * @return string
>      */
>     public function getName()
>     {
>         return $this->name;
>     }
>
>     /**
>      * Set type
>      *
>      * @param string $type
>      */
>     public function setType($type)
>     {
>         $this->type = $type;
>     }
>
>     /**
>      * Get type
>      *
>      * @return string
>      */
>     public function getType()
>     {
>         return $this->type;
>     }
>
>     /**
>      * Set cat
>      *
>      * @param string $cat
>      */
>     public function setCat($cat)
>     {
>         $this->cat = $cat;
>     }
>
>     /**
>      * Get cat
>      *
>      * @return string
>      */
>     public function getCat()
>     {
>         return $this->cat;
>     }
>
>     /**
>      * Set visible
>      *
>      * @param boolean $visible
>      */
>     public function setVisible($visible)
>     {
>         $this->visible = $visible;
>     }
>
>     /**
>      * Get visible
>      *
>      * @return boolean
>      */
>     public function getVisible()
>     {
>         return $this->visible;
>     }
>
>     /**
>      * Set path
>      *
>      * @param string $path
>      */
>     public function setPath($path)
>     {
>         $this->path = $path;
>     }
>
>     /**
>      * Get path
>      *
>      * @return string
>      */
>     public function getPath()
>     {
>         return $this->path;
>     }}
>
> [/code]
> Thanks for your help!

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en

Reply via email to