Subform et js probleme dans un module

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Subform et js probleme dans un module

    hello comme certain le save j'ai créer un module d'administration pour joomla

    j'utilise les subform de joomla c'est top ...
    par contre j'aurais aimé corriger un soucis de script lors de la duplication des rows .. les elements utilisant du js ne fonctionnent pas il faut sauver le module
    la doc fait état de ce soucis ... mais je suis une bille en js

    1 j'ai pas trouver comment ajouter un js dans le backend du module ...
    2 je voudrais adapter le js pour eviter de devoir ssauver pour que l'iconpicker marche sans sauver le module ...
    des idées ?
    Merci
    Société : http://www.com3elles.com
    Bénévole : http://www.flexicontent.org

  • #2
    Salut Yannick.

    Les subform fonctionnent bien maintenant et c'est effectivement un outil très puissant du framework que j'utilise depuis + d'1 an dans mes composants des qu'il faut générer des sous-formulaires répétables dans un formulaire.

    Le framework fournit les procédures d'ajout et de suppression des sous-formulaires et même de glisser déplacer pour changer l'ordre des sous-formulaires, procédures qui fonctionnent bien maintenant, c'est effectivement génial.
    De mon côté les problèmes que j'ai pu rencontrer au début sont maintenant réglé (j'avais ouvert un fil sur le tracker).

    Je ne suis pas sûr d'avoir totalement compris ton problème.

    Si tu veux rajouter quelque chose ou intervenir dans un subform ou sur ses champs, je n'ai pas trouvé d'autre technique que de copier le layout et ses fichiers situé en /layouts/joomla/form/field/subform/type_de_layout dans /administrator/components/com_toncomposant/layout/....

    Il faut alors définir le layout dans ta balise <field ... type="subform" .... layout="plan.edit.repeatable-table"....> si par exemple tu l'as placé en /administrator/components/com_toncomposant/layout/plan/edit/repeatable-table/
    (au lieu du classique layout="joomla.form.field.subform.repeatable-table")

    Tu peux alors y faire tes adaptations.

    Par exemple modifier les attributs des champs composant les sous-formulaires (comme par exemple des Jform->setFieldAttribute dans /administrator/components/com_toncomposant/layout/plan/edit/repeatable-table/section.php).

    Je ne suis pas un pro du JS non plus, mais si tu as un script à personnaliser dynamiquement dans chaque sous-formulaire, c'est là qu'il faudra le générer.

    Espérant t'avoir aidé.
    Dernière édition par roland_d_alsace à 08/01/2019, 23h46
    A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
    Rejoignez le Joomla Users Groupe Alsace...
    roland_d_alsace va-t-il devenir roland_du_grand_est ?

    Commentaire


    • #3
      .. en fait je voudrais 2 choses
      => j'utilise des champs listes : comment rajouter le choosen ? j'arrive pas a trouver la doc !
      => je vousdrais que lorsque l'on rajoute une ligne, l'icone picker soit initialisé sans avoir a sauver la page
      en fait j'ai trouvé ou mettre le code ... puis j'ai un debut ... le script commence a fonctionné en direct ... maintenant c'est pas totalement fonctionel (j'ai commité pour test)
      Dernière édition par y.berges à 09/01/2019, 09h19
      Société : http://www.com3elles.com
      Bénévole : http://www.flexicontent.org

      Commentaire


      • #4
        Salut

        Je ne sais pas si le probleme est le meme.
        Quand j'utilise des subforms, je perds toutes mes interactions avec mes fonctions javascript que j'ai cree.

        J'ai cree le script suivant
        dans ton module tu appeles un fichier js.

        Code PHP:

        $j 
        jQuery.noConflict();
        $j(document).ready(function() {

           
        $j("body").on"click""input[name*='[xxxxxxx]']", function () {
             
        console.log(this.id);
              });

          }); 
        xxxxx etant le nom utilise dans ton xml
        Le but de ce script est d'afficher dans la console l'id de l'element.
        Apres tu mets les differentes fonctions que le bouton a l'habitude d'appeler.

        Ceci a permis de faire fonctionner les subforms comme je le veux.

        ++
        Wis

        PS : c'etait pour interagir avec des champs text de type input. A ajuster en fonction du JFormField utilisé.

        Une autre version ( interaction avec le bouton : "Ajouter" du formfield )
        Code PHP:
        $j jQuery.noConflict();
        $j(document).ready(function() {

           
        $j("body").on"click"".group-add-sr-0", function () {
              var 
        nbc;
              
        nbc $j(".group-add-sr-0").length;
             
        console.log(nbc);
           });
        }); 
        Afficher dans la console, le nombre de fois que la class group-add-sr-0 est présente.
        Dernière édition par Wismer à 09/01/2019, 12h41

        Commentaire


        • #5
          bon avec mon dernier commit c'est mieux ... https://github.com/micker/mod_joomad...eabd65d38a9b47
          c'est pas completement initialisé mais presque ...
          des idées ?
          Société : http://www.com3elles.com
          Bénévole : http://www.flexicontent.org

          Commentaire


          • #6
            Je ne partirai pas comme toi.

            Je ferai comme ceci.
            Dans ton fichier default.php du repertoire tmpl de ton module, je rajouterai la ligne suivante assez haut dans le fichier.
            Code PHP:
            JHTML::script(Juri::base() . 'toncheminverstonmodules/assets/js/lenomdetonfichier.js'); 
            Dans ce fichier : lenomdetonfichier.js
            Code PHP:
                                  jQuery(document).ready(function(){
                                      
            jQuery(document).on('subform-row-add', function(eventrow){
                                          
            jQuery(row).find('button').iconpicker();
                                          
            jQuery(row).find('select').chosen();
                                      }) 
            le Jquery.ready : veut dire se charge une fois que tous les elements du DOM sont affichés, voila pourquoi il faut le sortir de ton fichier iconepicker.php

            Voila comment je ferai, mais c'est pas dit que c'est la meilleure solution.

            ++
            Wis

            Commentaire


            • #7
              le soucis c'est que l'icon picker n'est pas dans la vue du module mais dans l'admin ... et pour l'admin il n'y a pas de vue a proprement parler ... tout est générer via le xml
              Société : http://www.com3elles.com
              Bénévole : http://www.flexicontent.org

              Commentaire


              • #8
                Envoyé par y.berges Voir le message
                le soucis c'est que l'icon picker n'est pas dans la vue du module mais dans l'admin ... et pour l'admin il n'y a pas de vue a proprement parler ... tout est générer via le xml
                Je ne comprends pas dans tous les cas le "document" reste accessible, qu'il soit généré par JHTML ou par JForm.

                Un JFactory::getDocument()->addScriptDeclaration

                .... doit donc marcher dans tous les cas.

                Voir JDocument...

                Où alors tu déclares ton script dans ton layout personnalisé de ton champ subform (voir ma réponse ci-dessus...)
                Dernière édition par roland_d_alsace à 17/01/2019, 09h06
                A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                Rejoignez le Joomla Users Groupe Alsace...
                roland_d_alsace va-t-il devenir roland_du_grand_est ?

                Commentaire


                • #9
                  la avec le code en ligne je n'ai qu'un rendu partiel ..... le js est pas complétement charger ... grennnneennene
                  Société : http://www.com3elles.com
                  Bénévole : http://www.flexicontent.org

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X