Bien le bonjour,
Je souhaite avoir un attribut photo à l'un de mes objets.
Lorsque j'ajoute un objet et que je met un photo, celle ci est bien uploadé (au bonne endroit), présente dans ma db, et visible sur le site.
malheureusement, lorsque je veux editer mon objet, le champ input file est vide et donc si je ne fais pas attention et que je sauve l'objet, il efface mon image.
comment corrigé ?
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 use Symfony\Component\Validator\Constraints as Assert; /** * @ORM\Table() * @ORM\HasLifecycleCallbacks */ class monObjet { ... /** * @var string $vignette * @Assert\File(maxSize="6000000") * * @ORM\Column(name="vignette", type="string", length=255, nullable=true) */ private $vignette; /** * Set vignette * * @param string $vignette */ public function setVignette($vignette) { $this->vignette = $vignette; } /** * Get vignette * * @return string */ public function getVignette() { return $this->vignette; } public function getFullPicturePath() { return null === $this->vignette ? null : $this->getUploadRootDir() . $this->vignette; } public function getVignetteWebPath() { return null === $this->vignette ? null : $this->getUploadDir() . '/' . $this->vignette; } 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/uploads/parcours/'; } protected function getUploadDir() { // get rid of the __DIR__ so it doesn't screw when displaying uploaded doc/image in the view. return '/uploads/parcours/' . $this->getId() . "/"; } /** * @ORM\PrePersist() * @ORM\PreUpdate() */ public function uploadPicture() { // the file property can be empty if the field is not required if (null === $this->vignette) { return; } if (!$this->id) { $this->vignette->move($this->getTmpUploadRootDir(), $this->vignette->getClientOriginalName()); } else { $this->vignette->move($this->getUploadRootDir(), $this->vignette->getClientOriginalName()); } $this->setVignette($this->vignette->getClientOriginalName()); } /** * @ORM\PostPersist() */ public function movePicture() { if (null === $this->vignette) { return; } if (!is_dir($this->getUploadRootDir())) { mkdir($this->getUploadRootDir()); } copy($this->getTmpUploadRootDir() . $this->vignette, $this->getFullPicturePath()); unlink($this->getTmpUploadRootDir() . $this->vignette); } /** * @ORM\PreRemove() */ public function removePicture() { unlink($this->getFullPicturePath()); rmdir($this->getUploadRootDir()); } }
Partager