Bonjour,
J'essaye de mettre en place un formulaire qui, à la validation, vérifie si la valeur de l'un des champs existe déjà en base de donnée.
Je pensais à la base mettre en place une fonction dans ma classe de repository quand j'ai découvert qu'il y avait une contrainte qu'on pouvait rajouter en annotation de son entité à validé, cette contrainte étant UniqueEntity.
Cependant, la contrainte ne semble pas fonctionner puisque mon formulaire passe quand même la validation pour m'afficher au final une belle erreur SQL vu que le champ en question est aussi unique en base de donnée.
Voici la tête de mon entité:
J'ai bien vérifié que dans config.yml, dans la section framework, j'ai la ligne:
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 <?php namespace XXXBundle\Entity; use Doctrine\ORM\Mapping\ManyToOne; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; /** * @ORM\Entity(repositoryClass="XXXBundle\Repository\CategoryRepository") * @ORM\Table(name="category") * * @UniqueEntity(fields="name", message="Le nom de la catégorie doit être unique!") */ class Category { /** * @ORM\Id * @ORM\Column(name="id", type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string $name * * @ORM\Column(name="name", type="string", length=100, unique=true) */ private $name; /** * @ORM\OneToMany(targetEntity="Activity", mappedBy="category") */ private $activity; /** * @ORM\OneToMany(targetEntity="Category", mappedBy="parent") */ private $children; /** * @ORM\ManyToOne(targetEntity="Category", inversedBy="children") * @ORM\JoinColumn(name="parent_id", referencedColumnName="id") */ private $parent; public function __construct() { $this->activity = new \Doctrine\Common\Collections\ArrayCollection(); $this->children = new \Doctrine\Common\Collections\ArrayCollection(); } /** * 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; } /** * Add activity * * @param XXXBundle\Entity\Activity $activity */ public function addActivity(\XXXBundle\Entity\Activity $activity) { $this->activity[] = $activity; } /** * Get activity * * @return Doctrine\Common\Collections\Collection */ public function getActivity() { return $this->activity; } /** * Add children * * @param XXXBundle\Entity\Category $children */ public function addCategory(\XXXBundle\Entity\Category $children) { $this->children[] = $children; } /** * Get children * * @return Doctrine\Common\Collections\Collection */ public function getChildren() { return $this->children; } /** * Set parent * * @param XXXBundle\Entity\Category $parent */ public function setParent(\XXXBundle\Entity\Category $parent) { $this->parent = $parent; } /** * Get parent * * @return XXXBundle\Entity\Category */ public function getParent() { return $this->parent; } }
Comment faire dès lors pour faire fonctionner cette contrainte?
Code : Sélectionner tout - Visualiser dans une fenêtre à part validation: { enable_annotations: true }
Partager