Bonjour à tous .
Je viens d'arriver sur ce forum en espérant y trouver ici les réponses à mes questions ainsi qu'une communauté de passionnés
J'ai un petit problème auquel je ne trouve pas de solution, j'ai fait mes recherches sur le net sans succès. C'est pourquoi je me tourne désormais vers vous.
Je dois créer un site avec le framework symfony ou les utilisateurs peuvent s'inscrire. Comme le formulaire de base de FOSUserBundle était limité, j'ai rajouté des champs à mon entité USER perso que voila :

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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
 
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
 
 
	 /**
     * @var string $nom
     *
     * @ORM\Column(name="nom", type="string", length=50)
	 * @Assert\NotBlank()
	 * @Assert\MinLength(2)
     */
    private $nom;
 
	 /**
     * @var string $prenom
     *
     * @ORM\Column(name="prenom", type="string", length=50)
	 * @Assert\NotBlank()
	 * @Assert\MinLength(2)
     */
    private $prenom;
 
	 /**
     * @var integer $telephone_fixe
     *
     * @ORM\Column(name="telephone_fixe", type="integer", length=10, nullable="false")
	 * @Assert\MinLength(10)
	 * @Assert\MaxLength(10)
     */
    private $telephone_fixe;
 
	//nullable = false car on peut désirer ne pas mettre son numéro de téléphone
    /**
     * @var integer $telephone_port
     *
     * @ORM\Column(name="telephone_port", type="integer", length=10, nullable="false")
	 * @Assert\MinLength(10)
	 * @Assert\MaxLength(10)
     */
    private $telephone_port;
 
    /**
     * @var string $ville
     *
	 * @Assert\NotBlank()
     * @ORM\Column(name="ville", type="string", length=50)
     */
    private $ville;
 
	 /**
     * @var integer $codepostal
     *
     * @ORM\Column(name="codepostal", type="integer", length=5)
	 * @Assert\NotBlank()
	 * @Assert\MinLength(5)
	 * @Assert\MaxLength(5)
     */
    private $codepostal;
 
	 /**
     * @var integer $nb_group
     *
     * @ORM\Column(name="nb_group", type="integer", length=5, nullable="false"))
	 * @Assert\NotBlank()
     */
    private $nb_group;
 
	 /**
     * @var date $datenaiss
	 *
     * @ORM\Column(name="datenaiss", type="date")
	 * @Assert\NotBlank()
     */
    private $datenaiss;
 
	/**
     * @ORM\ManyToMany(targetEntity="Bandsboard\SiteBundle\Entity\Fonction")
     */
	private $fonctions;
 
	/**
     * @ORM\ManyToMany(targetEntity="Bandsboard\SiteBundle\Entity\Style")
     */
	private $styles;
 
		/**
     * @ORM\ManyToMany(targetEntity="Bandsboard\SiteBundle\Entity\Instrument")
     */
	private $instruments;
 
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
 
	 public function getNom()
    {
        return $this->nom;
    }
 
	 public function setNom($nom)
    {
        $this->nom = $nom;
    }
 
		 public function getPrenom()
    {
        return $this->prenom;
    }
 
	 public function setPrenom($prenom)
    {
        $this->prenom = $prenom;
    }
 
		 public function getTelephoneFixe()
    {
        return $this->telephone_fixe;
    }
 
	 public function setTelephoneFixe($telephone_fixe)
    {
        $this->telephone_fixe = $telephone_fixe;
    }
 
		 public function getTelephonePort()
    {
        return $this->telephone_port;
    }
 
	 public function setTelephonePort($telephone_port)
    {
        $this->telephone_port = $telephone_port;
    }
 
		 public function getVille()
    {
        return $this->ville;
    }
 
	 public function setVille($ville)
    {
        $this->ville = $ville;
    }
 
		 public function getCodePostal()
    {
        return $this->codepostal;
    }
 
	 public function setCodePostal($codepostal)
    {
        $this->codepostal = $codepostal;
    }
 
		 public function getNbGroup()
    {
        return $this->nb_group;
    }
 
	 public function setNbGroup($nb_group)
    {
        $this->nb_group = $nb_group;
    }
 
		 public function getDateNaiss()
    {
        return $this->datenaiss;
    }
 
	 public function setDateNaiss($datenaiss)
    {
        $this->datenaiss = $datenaiss;
    }
 
	// getter et setter pour les fonctions
	public function getFonctions()
    {
        return $this->fonctions;
    }
 
    public function addFonction(\Bandsboard\SiteBundle\Entity\Fonction $fonction)
    {
        $this->fonctions[] = $fonction;
    }
	// getter et setter pour les styles
	public function getStyles()
    {
        return $this->styles;
    }
 
    public function addStyle(\Bandsboard\SiteBundle\Entity\Style $style)
    {
        $this->styles[] = $style;
    }
	// getter et setter pour les instruments
	public function getInstruments()
    {
        return $this->instruments;
    }
 
    public function addInstrument(\Bandsboard\SiteBundle\Entity\Instrument $instrument)
    {
        $this->instruments[] = $instrument;
    }
 
		// constructeur pour les fonctions,styles et instruments de User
    public function __construct()
    {
	    parent::__construct();
		$this->fonctions = new \Doctrine\Common\Collections\ArrayCollection;
		$this->styles = new \Doctrine\Common\Collections\ArrayCollection;
		$this->instruments = new \Doctrine\Common\Collections\ArrayCollection;
    }
 
}
Jusque là tout va bien.
Voici au passage mon formulaire fils qui hérite du form inscription de FOS :
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
 
class RegistrationFormType extends BaseType
{
 
 public function buildForm(FormBuilder $builder, array $options)
    {
        parent::buildForm($builder, $options);
        $builder->add('nom');
		$builder->add('prenom');
		$builder->add('telephone_fixe');
		$builder->add('telephone_port');
		$builder->add('ville');
		$builder->add('codepostal');
		$builder->add('datenaiss');
		$builder->add('fonctions');
		$builder->add('styles');
		$builder->add('instruments');
    }
 
    public function getName()
    {
        return 'bandsboard_user_inscription';
    }
 
}

En réalité j'ai 2 problèmes une fois que je met les valeurs dans le formulaire et que j'appuie sur envoyer j'ai l'erreur suivante :
"Expected argument of type "numeric", "boolean" given
500 Internal Server Error - UnexpectedTypeException "

Avec le stack trace étape 1 :
"in C:\wamp\www\Symfony\vendor\symfony\src\Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer.php at line 73
}
if (!is_numeric($value)) {
throw new UnexpectedTypeException($value, 'numeric');
}
$formatter = $this->getNumberFormatter(); "
Pourquoi? je ne vois pas où je rentre un booleen...

Et le problème secondaire tous mes champs ont pour nom : fos_user_registration_form_codepostal etc ... c'est pas très beau xD ! Quelqu'un aurait une solution pour que je puisse mettre mon texte en dur? j'ai déja essayé de faire un formulaire avec des div et des label en mettant par exemple "form.codepostal" et de mettre mon label etc.. mais bizarrement ça ne marche pas.
Y aurait t'il un rapport avec le formHandler? dont je n'ai rien hérité ...

A vrai dire je m'y perd un peu dans tout cet héritage. Je ne sais pas vraiment les étapes requises pour "refaire" un formulaire fils .. je vais devoir de tout façon réitérer pour le formulaire permettant d'éditer son profil...
Merci d'avance pour vos réponses. et à ceux qui m'auront lu jusqu'au bout !