- WordPress :4.7
- Statut : résolu
- Ce sujet contient 5 réponses, 2 participants et a été mis à jour pour la dernière fois par
Timama, le il y a 6 années et 7 mois.
-
AuteurMessages
-
14 février 2017 à 14 h 33 min #1620691
Bonjour,
Ma configuration WP actuelle WordPress 4.7.2
- Version de PHP/MySQL : 5.6.30
- Thème utilisé : le mien
- Extensions en place : gravity form
- Nom de l’hébergeur : Strato
- Adresse du site :
Problème(s) rencontré(s) :
Bonjour,
J’ai un formulaire de connexion, avec un formulaire simple de gravity form (login, mot de passe).
Dans functions.php, j’ai ajouté les fonctions de validation pour ce formulaire.
add_filter('gform_validation_124', 'msk_gform_user_registration_validation');
function msk_gform_user_registration_validation($validation_result){
global $user;
$form = $validation_result['form'];
$user_id = $user->ID;
$user1 = get_userdata( $user_id );
$user_role = array_shift($user1->roles);
if ($user_role != 'mitglieder_partnerlieferanten' )
{
if ($user_role == 'mitglieder_mitglieder' )
{
$admission = $user->usermitglieder_admission;
}
if ($user_role == 'mitglieder_partnerorganisationen' )
{
$admission = $user->userpartnerorga_admission;
}
// AJOUT TEST POUR SAVOIR SI LE USER EST ADMIS (ou administrato = admis direct)
if (($admission == 'ja' ) OR ($user_role == 'administrator' ))
{
$admissiontag = 0;
}
else
{
echo '<script type="text/javascript">window.alert(" Sie sind nicht Miglieder ");</script>';
/*echo '<script type="text/javascript">$(document).ready(function(){ $(".validation_error").prepend("Sie sind nicht Miglieder");});</script>';*/
/*return '<div class="connexion-error">Sie sind nicht Miglieder.</div>';*/
/*echo '<script type="text/javascript">$(".validation_error").prepend("Sie sind nicht Miglieder");</script>';*/
}
}
else
{
/*echo '<script type="text/javascript">window.alert(" Sie können nur in Lieferantenbereich anmelden! ");</script>';*/
echo '<script type="text/javascript"> document.getElementById("connexionerror").innerHTML=" Sie können nur in Lieferantenbereich anmelden!"</script>';
/*var D = document.getElementById("connexionerror");
D.innerHTML = "Sie können nur in Lieferantenbereich anmelden!";
</script>';*/
/*echo '<script type="text/javascript">
var div = document.getElementById("connexionerror");
div.textContent = "Sie können nur in Lieferantenbereich anmelden!";
var text = div.textContent;
</script> ';*/
/* return '<div class="connexionerror">Sie können nur in Lieferantenbereich anmelden!.</div>';*/
}
$validation_result['form'] = $form;
return $validation_result;
}J’ai des cas à respecter pour la connexion.
Et je fais afficher des popup quand les conditions ne sont pas respectées.
Mais j’aimerai que ces messages soient inclus directement dans la page plutôt que dans un popup.
Du coup, j’ai créé un div vide dans la page
<div id= »connexionerror »> </div></br>
où j’essai de mettre le message. En gros, j’essai de remplir ce div par du texte.
Si $user_role est égal à ‘mitglieder_partnerlieferanten’ , et bien celui ci ne peux pas se logger et le message « Sie können nur in Lieferantenbereich anmelden! » doit apparaître.
J’ai essayé plein de choses (qui sont en commentaire dans le code ci dessus). j’ai essayé d’injecter du texte dans le div en utilisant du javascript.
Mais mon div connexionerror reste toujours vide….Du coup, je me demande si ce n’est pas parce qu’il faut mettre le javascript à la fin du code, ce que je ne peut pas faire vu qu’il faut qu’il soit inclu dans le cas particulier…..
Avez vous des indices? conseils pour cela ?
merci pour votre aide
Timama
14 février 2017 à 15 h 56 min #1620708alors, en fait j’ai abandonné mon idée d’injecté du text dans un div à l’aide de javascript.
J’ai donc créé une autre fonction dans functions.php
/* Modifie le texte de message d'erreur gravity form¨*/
add_filter("gform_validation_message_124", "change_message", 10, 2);
function change_message($message, $form){
global $user;
$form = $validation_result['form'];
$user_id = $user->ID;
$user1 = get_userdata( $user_id );
$user_role = array_shift($user1->roles);
if ($user_role != 'mitglieder_partnerlieferanten' )
{
if ($user_role == 'mitglieder_mitglieder' )
{
$admission = $user->usermitglieder_admission;
}
if ($user_role == 'mitglieder_partnerorganisationen' )
{
$admission = $user->userpartnerorga_admission;
}
// AJOUT TEST POUR SAVOIR SI LE USER EST ADMIS (ou administrato = admis direct)
if (($admission == 'ja' ) OR ($user_role == 'administrator' ))
{
}
else
{
return '<div class="validation_error">Sie sind nicht Miglieder.</div>';
}
}
else
{
return '<div class="validation_error">Sie können nur in Lieferantenbereich anmelden!.</div>';
}
}cela modifie le texte d’eerreur par défaut de gravity form dans le cas où if ($user_role == ‘mitglieder_partnerlieferanten’ )
mais la boucle
if (($admission == 'ja' ) OR ($user_role == 'administrator' ))
{
}
else
{
return '<div class="validation_error">Sie sind nicht Miglieder.</div>';
}ne fonctionne pas…..
même quand admission ==Nein, ça se loggue et ne met pas de message d’erreur
je continue à chercher
15 février 2017 à 7 h 25 min #1620807D’abord, si tu fais du JavaScript, pourquoi ne pas utiliser jQuery intégré à WordPress ?
getElementById("connexionerror"); [...] <div class="connexionerror">
Je ne connais pas l’intégralité du code, mais tu fais une recherche sur un Id « connexionerror » (qui soit dit en passant me paraît bizarrement orthographié en Anglais, cela devrait être « connectionerror ») et tu envoies « connexionerror » comme une classe CSS. Il ne pourrait pas y avoir confusion à ce niveau ?
15 février 2017 à 10 h 03 min #1620818merci Franck pour ta remarque…..
ah oui, il y a class qui apparaît mais c’est en comentaire…j’ai essayé pas mal de chose..avec les classe aussi..
mes derniers essais étaient bien avec des div comme
echo '<script type="text/javascript"> document.getElementById("connexionerror").innerHTML=" Sie können nur in Lieferantenbereich anmelden!"</script>';
bon, pour le nom, meacoulpa.... je melange toujours connexion et connection.. et comme le site est en allemand, j'aurai même du ecrire "VerbindungFehler" .... mais bon... que veux tu dire en disant "si tu fais du JavaScript, pourquoi ne pas utiliser jQuery" ? merci par avance pour ton retour
15 février 2017 à 21 h 47 min #1620956ah oui, il y a class qui apparaît mais c’est en comentaire…
On est d’accord, sur le code cité, on s’en fout un peu (d’où ma remarque sur l’intégralité du code), cela n’empêche pas la confusion. Mais si dans ta page tu as un <div class= »connexionerror »>, tu ne peux pas l’appeler par un getElementById(« connexionerror »). Dans ta page, tu as bien un <div id= »connexionerror »> et non pas un <div class= »connexionerror »> ?
que veux tu dire en disant « si tu fais du JavaScript, pourquoi ne pas utiliser jQuery » ?
jQuery est un Framework JavaScript, implémenté dans WordPress de manière à optimiser le développement JavaScript, permettant notamment de le rendre indépendant du navigateur utilisé. Pour faire ce que tu veux, il suffit d’écrire :
$("#connexionerror").text("Mon Nouveau texte dans la div")
16 février 2017 à 14 h 35 min #1621087merci Frank pour ton retour.
oui j’ai bien un <div id= »connexionerror »> mais j’ia laissé tombé car cela ne fonctionnait pas…
peut être cela est du à l’utilisation à l’interieur d’une fonctionne utilisée par gravity form.
Du coup je suis passée par un autre chemin.
add_filter('gform_validation_124', 'msk_gform_user_registration_validation');
function msk_gform_user_registration_validation($validation_result){
global $user;
$form = $validation_result['form'];
$user_id = $user->ID;
$user1 = get_userdata( $user_id );
$user_role = array_shift($user1->roles);
if ($user_role != 'mitglieder_partnerlieferanten' )
{
if ($user_role == 'mitglieder_mitglieder' )
{
$admission = $user1->usermitglieder_admission;
}
if ($user_role == 'mitglieder_partnerorganisationen' )
{
$admission = $user1->userpartnerorga_admission;
}
// AJOUT TEST POUR SAVOIR SI LE USER EST ADMIS (ou administrato = admis direct)
if (($admission == 'ja' ) OR ($user_role == 'administrator' ))
{
}
else
{
/*echo '<script type="text/javascript">window.alert(" Sie sind nicht Miglieder ");</script>';*/
foreach ($form['fields'] as &$field) {
$validation_result["is_valid"] = false;
$field["failed_validation"] = true;
$field["validation_message"] = "Sie sind nicht Miglieder";
}
}
}
else
{
/*echo '<script type="text/javascript">window.alert(" Sie können nur in Lieferantenbereich anmelden! ");</script>';*/
foreach ($form['fields'] as &$field) {
$field["validation_message"] = "Sie können nur in Lieferantenbereich anmelden!";
}
}
$validation_result['form'] = $form;
return $validation_result;
}Dans la fonction de validation de gravity form, j’ai forcé l’écriture des mesages d’erreur pour mes cas en particulier.
Je suis passée par $form[‘fields’] pour modifier le validation_result.
Et là, cela affiche dans mon formulaire les message que je veux dans mes cas particuliers.
Donc en fait, je n’utilise pas de javascript pour insérer du texte au final…
merci pour ton aide Franck !
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.