Développement d'un module, affichage conditionnel dans le backend

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Développement d'un module, affichage conditionnel dans le backend

    Bonjour,

    Je cherche à afficher, dans le backend pour un module, des champs (fields du fichier xml) en fonction d'une sélection sur un champ de type 'radio'.
    Suivant le choix fait sur le champ 'radio', je souhaite afficher une première série de champs ou une seconde série.
    Merci pour votre aide.

  • #2
    Re : Développement d'un module, affichage conditionnel dans le backend

    Bonjour,
    Si vous voulez afficher les paramètre sur back office il faut créer d'abord les champs (feilds) dans votre fichier XML comme ce-ci:

    <field name="myradiovalue" type="radio" default="0" label="Select an option" description="">
    <option value="0">1</option>
    <option value="1">2</option>
    </field>
    Après il faut récupérer les paramètre sur votre module sur le contrôler ou sur tmpl/default.php par le code :
    $mon-variable = $params->get('nom de paramètre');
    Dans notre cas:
    $monRadio = $params->get('myradiovalue');




    Envoyé de mon iPad à l'aide de Forum Joomla.fr

    Commentaire


    • #3
      Re : Développement d'un module, affichage conditionnel dans le backend

      Merci pour ces informations, mais je sais faire cela.
      Ce que je cherche reste au niveau du backend. Dans le fichier XML, après un champ de type radio (ou autre si c'est ce qu'il faut), je veux pouvoir développer en fonction du choix de l'administrateur, l'une ou l'autre des séries de champs suivantes.
      Par exemple,
      <field name="choix" type="radio" default="0" label="Choix du nombre de champs" description="">
      <option value="0">1</option>
      <option value="1">2</option>
      </field>
      if (choix == 0)
      <field name="opt1" type="text" .... />
      if (choix == 1)
      <field name="opt2" type="text" ... />
      <field name="opt3" type="text" ... />

      Voilà et donc sur la gestion du module par l'administrateur, voir uniquement le champ "opt1" si on a choisi au-dessus l'option 1 et voir, à la place, les champs "opt2" et "opt3" si on a choisi au-dessus l'option 2.

      En espérant avoir été plus clair sur ce que cherche à réaliser ?
      Merci pour ceux qui peuvent m'aider.

      Commentaire


      • #4
        Re : Développement d'un module, affichage conditionnel dans le backend

        Donc pour cela vous devez développer un contrôleur avec php (coder tout en php) et il faut l'appeler sur votre fichier xml


        Envoyé de mon iPad à l'aide de Forum Joomla.fr

        Commentaire


        • #5
          Re : Développement d'un module, affichage conditionnel dans le backend

          Merci bien. Je vais regarder comment on fait ça, je ne l'ai jamais fait.
          Savez-vous s'il existe un tuto quelque part qui explique cela (même en anglais, pas de soucis) ?

          Commentaire


          • #6
            Re : Développement d'un module, affichage conditionnel dans le backend

            Bonjour,
            C difficile de trouver un tutoriel de ce genre, je vais vous orienter sur le bon route et a vous de continue.
            Créer un dossier sur votre root de module et nommé le par-exemple : elements puis créer un fichier nommé radio.php ; radio.js ;radio.css et jquery.js apres appler le dossier sur votre fichier XML avec le code suivant:
            <field addfieldpath="/modules/mod_nom_de_votre_module/elements" type="asset" name="asset" path="modules/mod_nom_de_votre_module/" />

            Après il vous reste de programmer ce que vous voulez sur les 3 fichiers.
            Dans le fichier radio.js vous devez creer les fonctions avec jquery.
            Exemple:
            window.addEvent('domready', function() {
            ici votre fonctions
            });
            Dans le fichier radio.php
            il faut importer les classes de fields avec le code suivant:
            jimport('joomla.form.formfield');
            //et importer aussi classe de html
            jimport('joomla.html.html');
            //Après créer une classe qui hérite de premier classe comme ce-ci:
            class JFormFieldCkradio extends JFormField {
            protected $type = 'radio';
            protected function getInput() {
            $html = array();
            // Récupérer les options.
            $options = $this->getOptions();
            // Creer bouton radio.
            foreach ($options as $i => $option) {

            // Initialisation des options.
            $checked = ((string) $option->value == (string) $this->value) ? ' checked="checked"' : '';
            $class = !empty($option->class) ? ' class="' . $option->class . '"' : '';
            $disabled = !empty($option->disable) ? ' disabled="disabled"' : '';

            // Initialisation JavaScript option.
            $onclick = !empty($option->onclick) ? ' onclick="' . $option->onclick . '"' : '';

            $html[] = '<div style="clear:both;"><input type="radio" id="' . $this->id . $i . '" name="' . $this->name . '"' .
            ' value="' . htmlspecialchars($option->value, ENT_COMPAT, 'UTF-8') . '"'
            . $checked . $class . $onclick . $disabled ' />';

            $html[] = '<label for="' . $this->id . $i . '"' . $class . '>' . JText::alt($option->text, preg_replace('/[^a-zA-Z0-9_\-]/', '_', $this->fieldname)) . '</label></div>';
            }
            }
            }
            Voila c comme ça comment ça marche programmation sur administration de joomla.
            Salam.

            Commentaire


            • #7
              Re : Développement d'un module, affichage conditionnel dans le backend

              Merci beaucoup. Je vais me lancer.

              Commentaire


              • #8
                Re : Développement d'un module, affichage conditionnel dans le backend

                Salut,
                @sbahjaoui
                juste une petite correction sur ton code :

                window.addEvent('domready', function() {
                ici votre fonction
                });
                C'est l'encapsulage de la lib MOOTOOLS pour indiquer que le "DOM is ready".

                Pour jQuery, c'est plutôt :

                $(document).ready(function() {
                // code ici

                });
                Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

                Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X