Bonjour,

J'ai un formulaire qui sert à uploader une image par mon utilisateur. J'ai mon entité photo qui est la suivant (avec la méthode upload pour gérer le fichier envoyé):

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
 
 
<?php
 
namespace Zero\ProfilBundle\Entity;
 
use Doctrine\ORM\Mapping as ORM;
 
/**
 * Photo
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Zero\ProfilBundle\Entity\PhotoRepository")
 */
class Photo
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
 
    /**
     * @var string
     *
     * @ORM\Column(name="url", type="string", nullable = true ,length=255)
     */
    private $url;
 
 
    /**
    * @ORM\Column(name="alt", type="string", length=255)
    */
     private $alt;
 
     private $file;
 
 
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
 
    /**
     * Set url
     *
     * @param string $url
     * @return Photo
     */
    public function setUrl($url)
    {
        $this->url = $url;
 
        return $this;
    }
 
    /**
     * Get url
     *
     * @return string 
     */
    public function getUrl()
    {
        return $this->url;
    }
 
    /**
     * Set alt
     *
     * @param string $alt
     * @return Photo
     */
    public function setAlt($alt)
    {
        $this->alt = $alt;
 
        return $this;
    }
 
    /**
     * Get alt
     *
     * @return string 
     */
    public function getAlt()
    {
        return $this->alt;
    }
 
	 public function setFile($file)
    {
        $this->file = $file;
 
        return $this;
    }
 
	public function getFile()
    {
        return $this->file;
    }
 
	  public function upload()
      {
 
        // Si jamais il n'y a pas de fichier (champ facultatif)
 
        if (null === $this->file) 
        {
          return;
        }
 
 
        // On garde le nom original du fichier de l'internaute
 
        $name = $this->file->getClientOriginalName();
 
 
       // On déplace le fichier envoyé dans le répertoire de notre choix
 
       $this->file->move($this->getUploadRootDir(), $name);
 
 
       // On sauvegarde le nom de fichier dans notre attribut $url
 
       $this->url = $name;
 
        // On crée également le futur attribut alt de notre balise <img>
 
       $this->alt = $name;
 
	  }
 
 
      public function getUploadDir()
      {
 
         // On retourne le chemin relatif vers l'image pour un navigateur
 
         return 'uploads/img';
 
	  }
 
 
      protected function getUploadRootDir()
      {
 
         // On retourne le chemin relatif vers l'image pour notre code PHP
 
         return __DIR__.'/../../../../web/'.$this->getUploadDir();
 
	  }
 
 
 
 
}
Et je génère le formulaire à partir de mon entité, en gardant uniquement le champs file

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
 
 
 
<?php
 
namespace Zero\ProfilBundle\Form;
 
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
 
class PhotoType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('file','file')
        ;
    }
 
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Zero\ProfilBundle\Entity\Photo'
        ));
    }
 
    public function getName()
    {
        return 'zero_profilbundle_phototype';
    }
}
Jusque là j'affiche le bouton d'ajout de l'image, et je sélectionne le fichier approprié. Ensuite au niveau du controleur j'essaye de récupérer l'url du fichier envoyé, ainsi:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
$image = new Photo();
$image->upload();
 
echo $image->getUrl();

Mais ca ne me retourne rien! Y a pas d'erreur, certes, mais le retour est NULL!

Une idée svp?