gravity form “gform_after_submission” avec nom de fonction variable

  • WordPress :5.0.3
  • Statut : non résolu
9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Messages
  • #2246790
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL :
    • Thème utilisé :
    • Extensions en place :
    • Nom de l’hébergeur :
    • Adresse du site :

    Problème(s) rencontré(s) :

    Bonjour,

    J’ai plusieurs formulaires qui peuvent être créés à tout moment. Je ne connais pas leurs numéros par avance.

    Mais je peux le récupérer. Soit  $num_formular cette variable indiquant le numéro du formulaire.

    J’ai une fonction qui fait référence à ce numéro de formulaire.

    Le numéro est dans le nom de la fonction. Ce nom sera donc amené à varier.

    J’ai essayé plusieurs chose:

    1-

    var mesFonctions = {
          "msk_gform_process_user_registration_".$num_formular : function ()
                  {
            }
    };
            
    var fct = "msk_gform_process_user_registration_".$num_formular;
     
    mesFonctions[fct]();

    mais la partie

    var mesFonctions = {

    est soulignée avec l’erreur “unexpected var”

    2-

    $functionName= 'msk_gform_process_user_registration_'.$num_formular;

    mais je ne sais pas comment déclarer la fonction

    function $functionName($entry, $form)
    {
    //corps de la fonction
       }
     
    add_action('gform_after_submission_'.$num_formular.'', 'msk_gform_process_user_registration_'.$num_formular.'', 10, 2);

    j’ai l’erreur “unexpected $funtionName”.

    Ce sont des fonction de wordpress.

    Je ne peut donc pas changer leur nom et leur nom dépend donc du numéro de formulaire, formulaire qui peut être créé donc à tout moment et donc je ne connais pas le numéro.

    Quelqu’un sait comment avoir un nom de fonction qui est dépendant d’un variable et surtout comment écrire tout ça ?

    merci pour votre aide

    Maïty

     

    • Ce sujet a été modifié le il y a 11 mois et 1 semaine par Timama.
    #2246834
    sebastienserre
    Gestionnaire du forum
    Maître WordPress
    810 contributions

    Bonjour,

    Cela fait un moment que je n’ai pas mis mon nez dans du dev autour de Gravity Form mais gform_after_submission est un hook PHP, alors quele code que tu montre est plutot du JS…

    #2246846
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    bonjour..
    Ah oui .. je me suis embrouillée…. merci pour cette remarque…

    C’est que je cherche plein de choses en même temps..

    EN PHP, je n’arrive pas à passer une variable….

    j’ai le code suivant maintenant

     

    add_shortcode( 'app-benutzer' , 'ss_get_appbenutzer' );
    function ss_get_appbenutzer($atts, $content = null){
    	/* Récupération du numéro du formulaire*/
        extract(shortcode_atts(array(
        'num_formular' => 'NUM_formular'
    	), $atts));
        
    	echo 'NUM 1 ='.$num_formular;
    
    	global $num_formular;
       $gform = "'gform_after_submission_".$num_formular."'";
       do_action($gform,$entry, $form,$num_formular );
    }	
    
    add_action('gform_after_submission_192', 'msk_gform_process_user_registration_MB', 10, 2);   
    function msk_gform_process_user_registration_MB ($entry, $form)  {
    
    echo 'EMAIL TEST =' .$emailhaupt;
    echo 'NUM 2='.$num_formular;
    echo 'ID = ' .$id;
    
    };

    et ça marche dans ce cas, l’affichage est le suivant.

    EMAIL TEST =emailhaupt@gmail.com

    NUM 2=

    ID = 192

    NUM 1 =192

    MAis moi ce que je veux, c’est également remplacer
    add_action(‘gform_after_submission_192’, ‘msk_gform_process_user_registration_MB’, 10, 2);

    en passant la variable  $num_formular à la place du 192, comme ça

    $gform = “‘gform_after_submission_”.$num_formular.”‘”;
    add_action($gform, ‘msk_gform_process_user_registration_MB’, 10, 2);

    mais quand je fais ça , j’ai l’affichage suivant:
    NUM 1 =192
    EMAIL TEST =
    NUM 2=
    ID =

    c’est vide car la variable $num_formular  est vide…..

    j’ai essayé de la mettre en global mais cela ne fonctionne pas….

    auriez vous un conseil pour cette variable ?
    >merci par avance

    • Cette réponse a été modifiée le il y a 11 mois et 1 semaine par Timama.
    • Cette réponse a été modifiée le il y a 11 mois et 1 semaine par Timama.
    #2246852
    sebastienserre
    Gestionnaire du forum
    Maître WordPress
    810 contributions

    et en concaténant comme ca:

    add_action(‘gform_after_submission_' . $num_formular, ‘msk_gform_process_user_registration_MB’, 10, 2);

     

    #2246919
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    merci pour ce conseil.

     

    Je l’ai testé, c’est dans mon post au dessus (oui il etait long, c’était à la fin 😉 ) mais le problème c’est que $num_formular est vide est vide en dehors de la fonction

    ss_get_appbenutzer

    et je n’arrive pas à la passer en global car justement elle est définit dans la fonction ss_get_appbenutzer.

    Et c’est pour ça que add_action ne fonctionne pas car $num_formular est vide

    #2246922
    sebastienserre
    Gestionnaire du forum
    Maître WordPress
    810 contributions

    ook,

    par contre rien ne vous empeche de faire un truc du genre

    add_action( 'init', 'mafonction');
    function mafonction( $atts ){
    	extract(shortcode_atts(array(
        'num_formular' => 'NUM_formular'
    	), $atts));
    add_action(‘gform_after_submission_' . $num_formular, ‘msk_gform_process_user_registration_MB’, 10, 2);
    }

    Par contre, il est plutôt conseillé d’éviter extract() au profit de https://codex.wordpress.org/Function_Reference/shortcode_atts

    #2246925
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    oh merci ! je vais regarder shortcode_atts. Je ne savais pas .

    J’ai pensé effectivement à inclure le add_action dans la fonction, mais cela ne fonctionne pas…
    même quand je met

    add_action( 'init', 'mafonction');
    function mafonction( $atts ){
    	extract(shortcode_atts(array(
        'num_formular' => 'NUM_formular'
    	), $atts));
       add_action('gform_after_submission_192', 'msk_gform_process_user_registration_MB', 10, 2);   
    }

    le texte

    ‘EMAIL TEST =’
    n’apparait même plus.. cela ne passe plus dans la fonction

    function msk_gform_process_user_registration_MB
    et là je ne sais pas pourquoi….

    c’est pour ça que j’ai mis le Add_action à l’exterieur…. et du coup j’ai un problème avec $num_formular

    • Cette réponse a été modifiée le il y a 11 mois et 1 semaine par Timama.
    #2246972
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    du coup j’essaie de passer la variable $num_formular en global mais je n’y arrive pas ..

    et pourtant je fait comme dans des docs que je lis.. mais rien

     

    
    /* Shortcode pour Ansprechpartner Benutzer Marque Blanche */
    add_shortcode( 'app-benutzer' , 'ss_get_appbenutzer' );
    function ss_get_appbenutzer($atts, $content = null){
    	global $num_formular;
    	/* Récupération du numéro du formulaire*/	
    	$atts = shortcode_atts(
    		array(
    			'num_formular' => 'NUM_formular'
    		), $atts);
    
    	//$num_formular = $atts['num_formular']; 
    	$GLOBALS['num_formular'] = $atts['num_formular']; 
    
       echo 'NUM Formulaire DANS SHORTCODE ='.$num_formular;
       echo 'global SHORTCODE=' .$GLOBALS['num_formular'];
    
       $gform = "'gform_after_submission_".$num_formular."'";
       do_action($gform,$entry, $form,$num_formular );
       return $GLOBALS['num_formular'];
    }	
    add_action('gform_after_submission_192', 'msk_gform_process_user_registration_MB', 10, 2);   
    
    
    echo 'Num Formulaire Hors Fontions GLOBAL='.$GLOBALS['num_formular'];
    echo 'Num Formulaire Hors Fontions='.$num_formular;
    
    
    function msk_gform_process_user_registration_MB ($entry, $form)  {
    
    echo 'PASSAGE DANS FNCTION msk_gform_process_user_registration_MB --> ok ';
    echo 'EMAIL TEST =' .$emailhaupt;
    
    }
    };

     

    ce code me donne l’affichage

    NUM Formulaire DANS SHORTCODE =192

    global SHORTCODE=192

     

    Num Formulaire Hors Fontions GLOBAL=    (toujours vide)

    Num Formulaire Hors Fontions=   (toujours vide, je n’arrive pas à passer $num_formular en global)

    PASSAGE DANS FNCTION msk_gform_process_user_registration_MB –> ok   (ici ça passe car j’ai laissé 192 dans le nom de la fonction )

    EMAIL TEST =emailhaupt@gmail.com

     

     

    merci pour vos conseils sur les globals

     

    #2247169
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    du coup cela n’a plus rien à voir avec la question de base…

    A part que c’est impossible d’avoir

     

    add_action('gform_after_submission_i', 'msk_gform_process_user_registration_i', 10, 2);   
    function msk_gform_process_user_registration_i ($entry, $form)  {

     

    avec i qui varie….

     

    merci pour votre aide

9 sujets de 1 à 9 (sur un total de 9)
  • Vous devez être connecté pour répondre à ce sujet.