143 Posts
Stef
9 years ago
7
Topic

Bonjour,

j'ai créé un formulaire utilisateur avec plusieurs champs personnalisés. J'aimerais qu'une fois que le visiteur ai rempli ces champs et cliqué sur "Enregistrer" qu'il soit directement connecté sur le site et redirigé sur une page.

J'ai installé pour ça le plugin "TCVN auto login" que j'ai trouvé sur le JED avec une très bonne critique (4,5 étoiles).

Toutefois il apparait que l'enregistrement en frontend (là où le plugin est actif donc) ne fonctionne plus. C'est comme si seuls les champs "User" était enregistrés et plus ceux de "Profil" et donc je n'ai donc qu'un enregistrement utilisateur Joomla. Ls infos saisie ne sont même pas enregistrées dans la table "_cck_store_item_users" 

Lorsque je désactive ce plugin, tout rentre dans l'ordre. 

J'ai essayé de le classer en dernier dans les plugins "Utilisateur" mais ça n'a rien changé. Je ne tiens pas particulièrement à l'utiliser mais j'aimerais trouvé une solution pour que l'utilisateur soit connecté une fois inscrit.

J'ai pensé à 2 choses :

  • Soit un temps d'arrêt à la fin du formulaire qui laisserait (peut-être) le temps à SEBLOD de tout enregistrer dans la base avant d'activer le plugin "TCVN auto login" - Mais là j'ai besoin d'une suggestion, je ne vois pas du tout comment faire...
  • Soit une autre solution pour une auto connexion que vous connaitriez peut-être ? :-)

En vous remerciant par avance pour toute suggestion dans ce topic...

Get a VIP membership
9 years ago
0
Level 1

Bonjour Stef,

Pour mettre en place une connexion automatique après un enregistrement pas besoin d'un plugin externe.

Tu peux installer le plugin "Code - Après la sauvegarde" que tu trouveras dans le package " Code Pack". L'installation s'effectue comme celle d'une extension "Extensions -> Gestion des extensions".

Tu créé un nouveau champ de type "Code - Après la sauvegarde" et tu ajoute le code suivant dans la zone de texte "Après la sauvegarde"

$app = &JFactory::getApplication();
$credentials = array(
                      "username" => $fields["user_username"]->value,
                      "password" => $fields["user_password"]->value
                     );
$app->login($credentials);

Cordialement,
Mehdi

9 years ago
3
Level 1

Bonjour Stef,

J'ajoute juste une petite condition au code que j'ai indiqué dans mon dernier post

if ($app->isSite() && $config['isnew']) {
    $app = &JFactory::getApplication();
    $credentials = array(
                            "username" => $fields["user_username"]->value,
                            "password" => $fields["user_password"]->value
                         );
    $app->login($credentials);
}

Cordialement,
Mehdi

143 Posts
Stef
9 years ago
2
Level 2

Bonjour Mehdi, 

et merci d'avoir passé un peu de temps sur ce topic :-)

J'ai acheté et installé le pack.J'ai créé un champ "Après la sauvegarde" avec ton code.

Maintenant, lorsque je créé  un nouveau compte, j'ai ce message qui apparait :

#user_first_name# IS A FIELD#user_last_name# IS A FIELD

Quelques précisions :

  1. Je n'avais pas ce message avant d'installé le champ "Après la sauvegarde"
  2. L'utilisateur est bel et bien créé mais pas connecté
  3. Les champs nommés dans le message sont concactés pour renseigner le champs "user_name"
  4. J'ai installé le champ "Après la sauvegarde" en tout dernier sur le formulaire. J'ai aussi essayé en tout premier, mais apparemment ça ne change rien.
  5. Pour info, si je met ton premier code (sans le "if"), c'est ce message que j'ai : Avertissement : Cet utilisateur n'existe pas

Ça te dit quelque chose ?

9 years ago
1
Level 3

Bonjour Stef,

J'ai ajouté le champs "Après la sauvegarde" sur le type de contenu "User" de base (sans traitement particulier, concaténation ou autres). Cela fonctionne bien.

Je pense que le problème vient du type de contenu que tu as défini.
  1. Peux-tu transmettre des captures d'écran du type de contenu que tu as défini pour voir l'ensemble des champs qui interagissent ? 
  2. Peux-tu également vérifier le stockage de chaque champ dans le type de contenu ? La règle c'est d'avoir le stockage suivant (standard ou personnalisé + utilisateur + nom_colonne)
  3. Enfin, peux-tu nous dire comment tu effectue la concaténation entre le nom et le prénom ?

Cordialement,
Mehdi.

143 Posts
Stef
9 years ago
0
Level 4

Bonjour Mehdi, ton coup de main ici est vraiment apprécié :)

  • Ici un screenshot du formulaire avec tous ses champs : Copie écran
  • Ici un screenshot du paramétrage du champ SD Field Concat pour renseigner le champ "name" : Copie écran
  • Ici, pour info, un screenshot du message d'erreur avec "Rapport d'erreur" au maximum et le dubbug Seblod activé : Copie écran
  • Mes champs personnalisé sont TOUS en 'Standard > Utilisateur > nom_champ', sont classés dans le dossier 'Profil' et ont été générés avec le cadenas fermé.
9 years ago
1
Level 1

Stef,

Je viens de faire une vérification et un test du code que j'ai transmis. J'ai corrigé 2 erreurs mineurs.

$app = &JFactory::getApplication();
if ($app->isSite() && $config['isNew']) {
        $credentials = array(
                                 "username" => $fields["user_username"]->value,
                                 "password" => $fields["user_password"]->value
                             );
         $app->login($credentials);
}

Cordialement,
Mehdi

143 Posts
Stef
9 years ago
0
Level 2

Bonjour Mehdi,

ça marche ! :-)

J'ai du modifier un tout petit peu le code dans la mesure où je concat le username avec l'email ce qui donne pour cette ligne :

"username" => $fields["user_email"]->value,

C'est parfait, merci beaucoup !

Get a Book for SEBLOD