IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Override RegistrationFormType erreur [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 159
    Points : 88
    Points
    88
    Par défaut Override RegistrationFormType erreur
    Bonjour,

    Je voudrais surcharger le formulaire d'enregistrement d'utilisateur du bundle FOSUserBundle pour gérer les différents rôles d'un utilisateur à sa création. Je m'aide de ce tuto. Mais j'ai un super message d'erreur sur la route register/ :

    " FatalErrorException: Compile Error: Declaration of Nas\UserBundle\Form\Type\RegistrationFormType::buildForm() must be compatible with that of Symfony\Component\Form\FormTypeInterface::buildForm() in C:\wamp\www\DevisNas\src\Nas\UserBundle\Form\Type\RegistrationFormType.php line 9 "

    J'ai mon fichier UserBundle\Form\Type\RegistrationFormType.php pour ajouter une liste déroulante au formulaire de base
    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
    <?php
     
    namespace Nas\UserBundle\Form\Type;
     
    use Symfony\Component\Form\FormBuilder;
    use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
     
    class RegistrationFormType extends BaseType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            parent::buildForm($builder, $options);
     
            // add your custom field
            $builder->add('roles', 'collection', array(
                   'type' => 'choice',
                   'options' => array(
                   'choices' => array(
                       'ROLE_ADMIN' => 'Admin',
                       'ROLE_EDITOR' => 'Editor'))));
        }
     
        public function getName()
        {
            return 'nas_user_registration';
        }
    }
    Puis mon fichier : app\config\config.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fos_user:
        db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
        firewall_name: main
        user_class: Nas\UserBundle\Entity\User
        registration:
            form:
                type: nas_user_registration
    Mon fichier : UserBundle\Resources\config\services.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    parameters:
    #    nas_user.example.class: Nas\UserBundle\Example
     
    services:
        nas_user.registration.form.type:
            class: Nas\UserBundle\Form\Type\RegistrationFormType
            arguments: [%fos_user.model.user.class%]
            tags:
                - { name: form.type, alias: nas_user_registration }
    Une idée les synfonystes ?

    Mercii

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 159
    Points : 88
    Points
    88
    Par défaut
    Ha j'avance ...

    L'erreur était dans la déclaration du USE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use Symfony\Component\Form\FormBuilder;
    J'ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use Symfony\Component\Form\FormBuilderInterface;
    Par contre maintenant j'ai un autre message :

    The type name specified for the service "nas_user.registration.form.type" does not match the actual name. Expected "nas_user_registration", given "fos_user_registration"

    Je ne comprend pas l'erreur...

    La dernière version de mon form :
    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
    <?php
     
    namespace Nas\UserBundle\Form\Type;
     
    use Symfony\Component\Form\FormBuilderInterface;
    use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
     
    class RegistrationFormType extends BaseType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            parent::buildForm($builder, $options);
     
            // add your custom field
            $builder->add('roles', 'collection', array(
    			   'type' => 'choice',
    			   'options' => array(
    			   'choices' => array(
    				   'ROLE_ADMIN' => 'Admin',
    				   'ROLE_EDITOR' => 'Editor'))));
        }
     
        public function getRoles()
        {
            return 'nas_user_registration';
        }
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 159
    Points : 88
    Points
    88
    Par défaut
    C'est good la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function getRoles()
        {
            return 'nas_user_registration';
        }
    Devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function getName()
        {
            return 'nas_user_registration';
        }
    Bon par contre il y a un "0" qui s'est glissé dans le lot... Juste avant la sélection des Rôles ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur "must override a superclass method"
    Par ElfeNoir dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 01/02/2012, 14h21
  2. [MVC] Erreur override non comprise
    Par KNIZOU dans le forum Spring Web
    Réponses: 3
    Dernier message: 18/07/2011, 05h13
  3. Erreur de compilation : clause override
    Par tintinux dans le forum Langage
    Réponses: 3
    Dernier message: 15/04/2010, 22h55
  4. fonction Overrides erreur
    Par salakta11 dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/05/2009, 07h18
  5. Réponses: 1
    Dernier message: 03/05/2007, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo