6
votes

Symfony2: Comment construire plusieurs formulaires d'inscription avec FosuserBundle

Je suis absolument nouveau à symfony2 mais déjà amoureux de ce cadre.

J'ai un projet qui nécessite de disposer de 3 types d'utilisateurs différents.

one sera super admin, autre Deux seront des utilisateurs réguliers mais avec différentes mises en page de profil. Différentes dispositions pour profil signifie que le formulaire d'inscription pour ces deux types d'utilisateurs doit avoir des champs de formulaire différents et des dispositions différentes dans l'application après l'enregistrement.

Je pense avoir l'idée (je ne sais pas si cela sera OK plus tard) Comment gérer les utilisateurs après inscription. Mais pour le moment, je ne comprends pas comment construire deux formulaires d'enregistrement différents qui seront étendus de Fosuserbundle.

Autant que je comprenne, Fosub n'a qu'un seul point de la configuration où l'enregistrement est configuré et ne peut pas avoir Plusieurs "inscription:"

dans la config.yml j'ai: xxx

sécurité.yml: xxx

Mon idée est de créer trois paquets différents qui étendent FosUU, mais la documentation indique qu'un seul paquet peut déclarer Fosub en tant que parent.

Une autre option (à partir de la documentation) consiste à étendre Containeraware Mise en œuvre de toutes les méthodes d'origine. . Mais même dans ce cas, je ne comprends pas comment je dois configurer l'application / config / {config | Security | Routage} / P>

S'il vous plaît, pointez-moi vers la bonne direction. Merci.


0 commentaires

3 Réponses :


4
votes

FosuserBundle ne doit pas fournir une authentification des utilisateurs, mais pour gérer les utilisateurs. Le Bundle vous fournit une meilleure structure pour gérer les utilisateurs à votre application. Si vous recherchez le code, vous trouverez des contrôleurs utilisés pour l'enregistrement par défaut et d'autres activités utilisateur.

Idéalement, vous voudriez écrire votre propre contrôleur et utiliser le paquet pour stocker et récupérer uniquement les utilisateurs. Ceci est particulièrement nécessaire lorsque vous souhaitez gérer plusieurs formulaires d'enregistrement / de connexion.

Les choses sembleraient plus claires une fois que vous commencez à envisager FosuserBundle uniquement pour gérer les utilisateurs et ne pas vous authentifier / les enregistrer.

Vous voudrez peut-être aussi regarder https://github.com/sonata-project/sonatauserbundled, qui fournit une intégration entre SonataadminBundle et FosuserBundle.


1 commentaires

Oui, j'ai mis en place ma propre version pour l'enregistrement. C'est seulement pour enregistrer les utilisateurs, pour d'autres fonctionnalités: rappel, activation, ... J'utilise la mise en œuvre standard FOSUUB.



5
votes

Oui, il peut être faisable. Mais ce sera une procédure complexe. Vous pouvez faire le suivant (je n'ai pas essayé cependant :))

  • Créez un motif de route comme / enregistrer / {type} et modifier RegisterAction en conséquence. Jetez un coup d'œil à Ce DOC pour les contrôleurs primordiaux. < / p>

  • in RegisterAction Méthode Créez un utilisateur vide Entité et définissez le type de l'argument de l'itinéraire. Appelez ensuite $ form-=> setdata () , E.g [1]

  • remplacer le InscriptionFormtype Pour ajouter un écouteur d'événement qui va écouter sur Forments :: Pre_set_Data événement de données. Ici, vous ajouterez des champs de formulaire de manière dynamique basée sur le type. Vérifiez Cette Entrée de cuisine.

  • vient maintenant la partie de validation. Créez deux types de groupes de validation pour chaque type d'utilisateur. Vous pouvez définir de manière dynamique du groupe de validation basé sur des données soumises. Vérifiez ici .

  • Si vous souhaitez effectuer une opération supplémentaire lors du formulaire, vous pouvez remplacer ONSUCCESS Méthode de InscrivezFormHandler . Vérifiez au bas de Ceci doc de faire cela. < / p>

    [1] comme ceci, xxx

    EDIT:

    La troisième étape ne fonctionnera pas. Vous devez remplacer processus méthode de InscriptionFormHandler Pour transmettre l'argument type de l'action du contrôleur.


0 commentaires

1
votes

Vérifiez cette bundle https://github.com/pugx/pugxmultiuserbundle . Il offre à tous les membres du personnel de travailler avec plusieurs types d'utilisateurs, y compris l'enregistrement


0 commentaires