BreezingForms, masquer des champs aux utilisateurs enregistrés

Si vous le désirez et puisque, lorsque l'utilisateur est connecté, certains champs peuvent ne pas être nécessairement affichés (si on les a p.ex. préremplis à l'aide d'un tutoriel précédent), on peut alors les masquer. Il ne seront pas visibles mais seront bien tranmis à l'administrateur du site.

Préparez votre formulaire de test comme suit :

  1. Une page, deux éléments :
    1. Élément 1 = Nom, nommé nom
    2. Élément 2 = E-Mail, nommé email
  2. Cliquez sur l'entête du formulaire en mode d'édition, cliquez sur "Avancé" puis "Plus d'options".
  3. Dans l'onglet "Scripts", section Scripts d'initialisation, entrez le code suivant et enregistrez :
function ff_Nom_du_formulaire_init() //nom_du_formulaire à remplacer par le nom de votre formulaire
{
     <?php
     if( JFactory::getUser()->get('id',0) > 0 )
     {
          echo
          "
          function mytoggler()
          {
               bfToggleFields('off', 'element', 'nom', bfDeactivateField);
               bfToggleFields('off', 'element', 'email', bfDeactivateField);
          }";
     }
     else
     {
          echo
          "
          function mytoggler()
          {
               bfToggleFields('on', 'element', 'nom', bfDeactivateField);
               bfToggleFields('on', 'element', 'email', bfDeactivateField);
          }";
     }
     ?>
} // ff_FORMNAME_init

La syntaxe serait bfToggleFields('off', 'section', 'nom_de_section', bfDeactivateField); si vous vouliez masquer une section. Vous remplacerez bien sûr "nom_de_section" par le nom réel de votre section.

Rendez-vous ensuite dans l'onglet "Pièces de formulaire" et dans la partie 'Après le formulaire", saisissez le code suivant puis enregistrez :

return '
<script type="text/javascript">JQuery(document).ready(function()
     {
          mytoggler();
     });</script>
';

Il faut ensuite initialiser la librairie JS. Sortez de l'édition des options avancées et alors que l'entête de formulaire est active, cliquez "Avancé". Au bas de page, dans la section "Règles de visibilité", ajouter ceci : turn on element mydummy if yourdummy is something

Testez le formulaire ci-dessous !

(Dé)Connnectez-vous pour voir la différence…

Ce formulaire n'étant pas muni de bouton de soumission, il ne traite et n'enregistre aucune donnée personnelle, il n'est présenté qu'à titre d'information et de test.

Si vous voyez les champs "Nom" et "E-mail", c'est que vous n'êtes pas connectés. Connectez-vous pour voir le résultat du masquage de ces champs.

Il vous reste, selon votre besoin, à mettre ces fonctions à l'œuvre dans vos formulaires et les personnaliser à votre souhait.

Cet exemple peut parfaitement être combiné aux champs préremplis expliqués dans cet article

Inspiré de: https://crosstec.org/en/support/online-documentation/breezingforms/12-examples-scripts/95-turn-section-off-for-registered-users.html

 Ajouter un commentaire
En utilisant ce formulaire de commentaires, vous acceptez que les informations demandées soient enregistrées, affichées ci-dessous et utilisées pour un éventuel contact.