We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 23050
    • 1,842 Posts
    Bonjour,

    Je bosse actuellement sur un site pour des notaires sur lequel ils souhaitent présenter des annonces immo. Sur chaque annonce, on affiche un lien "Nous contacter" qui renvoie vers le formulaire de contact.
    Dans ce formulaire, j’arrive à remplir automatiquement le champ "Sujet" avec le nom du bien immobilier et sa situation géo via une TV, en les passant dans la session et en la récupérant avec eForm via le paramètre &sessionVars.

    Sauf que, il peut arriver, pour une raison ou pour une autre, que le visiteur consulte plusieurs annonces, visite le site et veuille contacter l’étude mais pour un tout autre sujet que les annonces... Les données étant toujours en session, le sujet est à nouveau automatiquement rempli avec ma session.

    La première étape a été, déjà, de supprimer la session à l’envoi du mail. Facile avec &eFormOnMailSent.

    Le hic, c’est tant que l’utilisateur n’a pas envoyé son mail, la session est conservée.

    Donc, j’ai essayé de faire un plugin (aussi un snippet mais j’ai pas été plus chanceuse), qui me permettrait de définir la valeur que je souhaite passer au formulaire, quand je suis sur le détail d’une annonce, et qui, lorsque je vais sur une autre page, viderait la session.

    Mais, ça marche pas grin

    Voici mon dernier test, dans un snippet :

    <?php
    // Je recupere les infos du doc en cours
    $docEnCours = $modx->getDocumentObject('id',$modx->documentIdentifier);
    
    // Si je suis sur le detail d'une annonce
    if ($docEnCours['parent'] == '16' || $docEnCours['parent'] == '15' ) {
    
    // Je recupere les infos dont j'ai besoin
    $montitre = $docEnCours['pagetitle'];
    $location = $docEnCours['quartier'][1];
    // Je stocke dans une session pour l'appeler dans le formulaire avec &sessionVars
    $_SESSION['quelBien'] = $montitre. ' - ' .$location;
    
    // Si je ne suis pas sur le detail d'une annonce ni sur le formulaire, je reinitialise la session
    } elseif ($docEnCours['id'] != '9' ) {
    $_SESSION['quelBien'] = '';
    }
    ?>


    $_SESSION[’quelBien’] est bien créée sur le détail des annonces puisque j’arrive à l’afficher... mais dès que j’accède au formulaire, le sujet n’est plus rempli, et je ne peux plus afficher $_SESSION[’quelBien’]

    Je fais peut-être une erreur de logique quelque part avec || ou &&... ou un truc m’échappe... le php c’est nouveau pour moi ^^ Avis bienvenus ! smiley
      • 10449
      • 956 Posts
      Ca me semble trop compliqué... pourquoi des sessions? Tu peut créer un formulare dynamique avec les champs "hidden" (input type="hidden") et y mettre tous les infos que tu vous recevoir dans le email.
      Ton lien "Nous contacter" sera un formulaire donc, et transmettera les infos via $_POST. Sur la page du formulaire, tu ajoutera du nouveau ces champs.

      Tu pourrais également créer seulement un seul formulaire dynamique par annonce. Au debut, ça sera invisible (avec CSS ou JS), et avec un peu de Ajax ce form deviens visible (sans "page reload"). C’est pas difficile du tout...

      En tout cas, si tu veux contineur avec ton snippet, essaie de travailler avec $modx->setPlaceholder(’quartier’, ’Versailles’)
        • 23050
        • 1,842 Posts
        Pourquoi des sessions ? Parce qu’il me fallait passer mes infos de la page de détail à la page du formulaire et je n’ai trouvé que cette solution. eForm le permet en plus facilement grâce à &sessionVars donc j’ai sauté sur l’occasion ^^

        Je maitrise pas hyper top bien encore le php donc manipuler des $_POST ou autres, c’est encore flou ! D’ailleurs, c’est quoi la diff entre $_POST et $_SESSION (j’espère que mon formateur php ne me lit pas grin)

        Pour le formulaire dynamique, j’y ai pensé aussi... avec un genre de accordion par ex. Sauf que la cible des notaires n’étant pas forcément des personnes bien équipées, je préfère ne pas trop m’aventurer avec du js.

        Je pense que je vais finalement partir sur 2 formulaires : 1 générique et 1 pour les annonces. Ca me permet au final de me faciliter la tâche pour la gestion du &to (différent suivant le contenu du message)

        Merci pour tes pistes wink
          • 16732
          • 592 Posts
          Quote from: Perrine at Dec 14, 2007, 10:36 AM

          Pourquoi des sessions ? Parce qu’il me fallait passer mes infos de la page de détail à la page du formulaire et je n’ai trouvé que cette solution. eForm le permet en plus facilement grâce à &sessionVars donc j’ai sauté sur l’occasion ^^

          Je pense aussi que l’utilisation des sessions n’est pas vraiment approprié dans ton cas.

          Pourquoi ne pas passer en GET l’id du document qui correspond à ton bien immo dans le lien "Nous contacter".
          Il ne reste plus qu’a créer une fonction eForm (snippet) qui récupère les infos dont tu as besoin (tv) et les passent au formulaire avant de l’afficher (évènement &eFormOnBeforeFormMerge) wink