IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Upload image, problème 'move' [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut Upload image, problème 'move'
    Bonjour,

    Je débute avec symfony 2.

    J'ai suivi quelques tutos afin de réaliser un petit site pour me former.

    J'ai 2 entités : News et Image avec une relation onetoone.

    J'ai créé mes formulaires afin d'ajouter une news et une image associée.

    Ca fonctionne très bien, sauf que dans ma table image j'ai une url du genre "c:\wamp\tmp\phptmp545.bmp". Normal vu que j'ai pas traité le cas upload.

    En regardant la doc symfony, il y a une méthode 'move' qui permet cela. Sauf que j'obtiens une erreur.

    Méthodes utiles de l'entité News :
    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
    public function getFullImagePath() {
            return null === $this->image ? null : $this->getUploadRootDir(). $this->image;
        }
     
        protected function getUploadRootDir() {
            // the absolute directory path where uploaded documents should be saved
            return $this->getTmpUploadRootDir().$this->getId()."/";
        }
     
        protected function getTmpUploadRootDir() {
            // the absolute directory path where uploaded documents should be saved
            return __DIR__ . '/../../../../web/upload/';
        }
     
        public function upload()
        {
            // the file property can be empty if the field is not required
            if (null === $this->image) {
                return;
            }
     
            // move takes the target directory and then the target filename to move to
            $this->image->move($this->getUploadRootDir(), $this->image->getClientOriginalName());
     
            // set the path property to the filename where you'ved saved the file
            $this->image->url = $this->image->getClientOriginalName();
     
            // clean up the file property as you won't need it anymore
            $this->image = null;
        }
    La fonction où j'appelle ma méthode upload (NewsHandler) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function onSuccess(News $news)
        {
            $this->em->persist($news);
            $news->upload();
            $this->em->persist($news->getImage());
            $this->em->flush();
        }
    A ce niveau, mon formulaire est créé, la méthode POST vérifié, donc je suppose que l'objet News est rempli, ainsi que son image rattachée.

    J'obtiens cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Fatal error: Call to undefined method Feria\NewsBundle\Entity\Image::move() in C:\wamp\www\Symfony\src\Feria\NewsBundle\Entity\News.php on line 285
    Où la ligne 285 est la ligne où j'appelle move.

    $this->image est bien une propriété de la classe courante, et est non null.

    Si je suis pas clair, n'hésitez pas à me demander.

    Merci d'avance.
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    J'ai fait un var_dump($this->image); juste avant le move pour vous donnez une idée :
    object(Feria\NewsBundle\Entity\Image)[363]
    private 'id' => null
    private 'url' =>
    object(Symfony\Component\HttpFoundation\File\UploadedFile)[12]
    private 'test' => boolean false
    private 'originalName' => string 'Sans titre.png' (length=14)
    private 'mimeType' => string 'image/png' (length=9)
    private 'size' => int 13537
    private 'error' => int 0
    private 'alt' => string 'ddddddddd' (length=9)
    Sauf que ce sont les propriétés de mon objet image.

    J'ai l'impression qu'il ne sait pas où cherchez la fonction move() ... j'ai essayé plein de chose, mais en vain
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Pour les débutants qui se poseraient la question, il faut absolument que la méthode upload() soit dans la classe Image (ou celle qui gère votre document), et doit s'appliquer sur la propriété qui est en 'file'.

    Voilà résolu !
    Règle N° 1 : Si tout va bien, ne touchez à rien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Configuration] Problème d'upload image grosse taille
    Par chicho dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 19/09/2007, 18h31
  2. [Upload] upload d'images problèmes de résolution
    Par gecko642 dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2007, 18h23
  3. [Upload] GROS problème UPLOAD d'image !
    Par skarapace dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2006, 12h44
  4. [Upload] Upload d'image problème avec un dédié
    Par gobs dans le forum Langage
    Réponses: 2
    Dernier message: 24/01/2006, 18h57
  5. Réponses: 4
    Dernier message: 09/12/2005, 23h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo