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 :

FOSUserBundle embeded contraint pas active


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut FOSUserBundle embeded contraint pas active
    Hello,

    J'ai intégré le formulaire de registration de fosuserbundle
    à mon entité, ça fonctionne l'utilisateur se crée bien

    mais le soucis c'est que si quelqu'un met un login ou adresse mail déjà existante sf2 ne vas pas utiliser la contrainte de fosuserbundle et va tenter de créer l'utilisateur mais évidemment gros crash de l'application, message erreur sql contrainte

    comment configurer mon modèle ou mon form pour faire appel aux contraintes de fosuser ?

    si jamais j'ai mon code ici

    http://www.developpez.net/forums/d11...e/#post6377758

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    Je me rends compte que je n'ai pas besoin de créer mon propre registrationtype

    je peux faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       ->add('user', new RegistrationFormType('Ac\AcSecurityBundle\Entity\User'))
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ->add('user', new UserType())
    mais la contrainte de unique username n'est tjs pas active et l'applic se plante

    SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'jfs' for key 'UNIQ_1483A5E992FC23A8'

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Par défaut
    Salut jfsenechal,

    je suis confronté au même problème de contrainte d'intégrité. As-tu trouvé une solution depuis?

    Merci pour ton aide...

    Ptitcub

    [EDIT] j'ai trouvé une solution ici : http://www.developpez.net/forums/d11...form-embarque/

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    Rien de très propre

    Voici mon code

    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
     
      public function createAction() {
            $entity = new Voluntary();
            $request = $this->getRequest();
            $form = $this->createForm(new VoluntaryType(), $entity);
            $form->bindRequest($request);
     
            //  $errors = $validator->validate($author, array('registration'));
     
            if ($form->isValid()) {
     
                /*
                 * check user
                 */
     
                $user = $entity->getUser();
                $username = $user->getUsername();
                $email = $user->getEmail();
     
                $errorMessage = '';
     
                $userManager = $this->container->get('fos_user.user_manager');
                if ($userManager->findUserByUsername($username)) {
                    $errorMessage = 'Ce nom d\'utilisateur est déjà utilisé.';
                }
     
                if ($userManager->findUserByEmail($email)) {
                    $errorMessage = 'Cet email est déjà utilisé par quelqu\'un d\'autre.';
                }
     
                if ($errorMessage) {
                    return array(
                        'entity' => $entity,
                        'errorMessage' => $errorMessage,
                        'form' => $form->createView()
                    );
                }
     
                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($entity);
                $em->flush();
    ....
    Au début j'avais fait mon propre userType pour login mot de passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class UserType extends AbstractType {
     
        public function buildForm(FormBuilder $builder, array $options) {
            $builder
                    ->add('username','fos_user_username')
                    ->add('email', 'email')                
                    ->add('plainPassword', 'repeated', array('type' => 'password'))
    Que j'appelais dans ma classe voluntary
    ->add('user', new UserType())

    J'ai supprimer ce UserType
    Maintenant j'utilise celui de fos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     $builder
                    ->add('name')
                    ->add('surname')
                   ->add('user', 'fos_user_registration')
    Il y a surement moyen de faire appel au validation de Fos mais j'ai jamais trouvé

    Resources/config/validation.xml

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 135
    Par défaut
    Pourquoi tu n'utilise pas de l'ajax quand il saisie le champ unique?
    Comme sa tu fais une vérification javascript puis coté serveur t'appelle la même fonction pour voir si le formulaire est valide!

    Sinon moi j'ai créé un le fichier validation.xml dans Resources/config
    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
    <?xml version="1.0" ?>
    <constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping
    http://symfony.com/schema/dic/services/constraint-mapping-1.0.xsd">
     
        <class name="IML\DefaultBundle\Entity\User">
            <constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">
                <option name="fields">
                    <value>login</value>
                </option>
                <option name="message">Email deja utilise</option>
            </constraint>
        </class>
    </constraint-mapping>

Discussions similaires

  1. [W 2003 Server] j'arrive pas activé mon windows
    Par aityahia dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 25/04/2007, 03h02
  2. [FLASH MX] J'arrive pas à activer les boutons
    Par gil51 dans le forum Flash
    Réponses: 20
    Dernier message: 02/08/2006, 08h39
  3. Je n'arrive pas à Activer DAO
    Par polianita dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/07/2006, 12h19
  4. [Javascript] Form. valider par js, comment prevoir si js pas activé
    Par budiste dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/03/2006, 16h42
  5. Réponses: 10
    Dernier message: 17/10/2005, 11h07

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