Bonjour,
J'apprends à me servir du bundle FOSUserBundle et rencontre un petit problème après avoir personnalisé ma classe User.
Pour être cohérent, j'ai aussi crée ma propre classe RegistrationFormType et RegistrationFormHandler, pour obtenir les infos lors de l'enregistrement d'un nouvel utilisateur.
Comme je ne veux pas de champ username (mes utilisateurs s'authentifient à partir de l'email), je n'ai pas mis parent::buildForm($builder, $options); dans mon RegistrationFormType.
Voici le code de ma classe :
Mon Handler, lui, appelle parent::onSuccess($user, $confirmation);
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 class RegistrationFormType extends BaseType { public function buildForm(FormBuilder $builder, array $options) { // add your custom field $builder ->add('username') ->add('email', 'email') ->add('plainPassword', 'repeated', array('type' => 'password')) ->add('name', null, array( 'label' => 'Name:', )) ->add('familyName', null, array( 'label' => 'Family name:', )) ->add('birthdate', 'birthday', array( 'label' => 'Birthday:', )) ->add('city', null, array( 'label' => 'City:', )) ->add('sex','choice', array( 'choices' => array(1 => 'Male', 2 => 'Female'), 'label' => 'Gender', )); } public function getName() { return 'yop_user_registration'; } }
Ce qui pose un problème, j'ai comme message d'erreur "please input the username".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class RegistrationFormHandler extends BaseHandler { protected function onSuccess(UserInterface $user, $confirmation) { // Note: if you plan on modifying the user then do it before calling the // parent method as the parent method will flush the changes $user->setPoemsLeft(1); parent::onSuccess($user, $confirmation); // otherwise add your functionality here } }
Je pense comprendre qu'il ne faut pas que j'utilise le parent::onSuccess($user, $confirmation); ?
Seulement je n'ai pas trouvé le code où la vérification des données est effectuée ? Ou cela se trouve-t-il ?
Si je dois faire toutes les vérifs de champ moi-même, de quoi puis-je m'inspirer et où le code doit-il se trouver ?
Accessoirement, j'ai un champ poemsLeft pour ma classe User, que je souhaite remplir moi-même et ne pas le faire apparaître dans la Form.
Je pensais que ce serait ok avec la ligne : $user->setPoemsLeft(1);
Mais apparemment non, puisque j'ai aussi le message d'erreur : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'poemsLeft' cannot be null
A quel moment puis-je remplir le champ PoemsLeft de mon User ?
Si vous avez une ptite piste à me donner, ce serait sympa.
Merci d'avance!
Partager