Annonce

Réduire
1 sur 2 < >

C'est [Réglé] et on n'en parle plus ?

A quoi ça sert ?
La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
Comment ajouter la mention [Réglé] à votre discussion ?
1 - Aller sur votre discussion et éditer votre premier message :


2 - Cliquer sur la liste déroulante Préfixe.

3 - Choisir le préfixe [Réglé].


4 - Et voilà… votre discussion est désormais identifiée comme réglée.

2 sur 2 < >

Assistance au forum - Outil de publication d'infos de votre site

Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

UTILISER À VOS PROPRES RISQUES :
L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

Problèmes connus :
FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

Installation :

1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

Archive zip : https://github.com/AFUJ/FPA/zipball/master

2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
et remplacer www. votresite .com par votre nom de domaine


Exemples:
Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
Télécharger le script fpa-fr.php dans: /public_html/
Pour executer le script: http://www..com/fpa-fr.php

Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
Télécharger le script fpa-fr.php dans: /public_html/cms/
Pour executer le script: http://www..com/cms/fpa-fr.php

En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
Voir plus
Voir moins

Comment donner des valeurs initiales aux champs Jlayout

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

  • [Problème] Comment donner des valeurs initiales aux champs Jlayout

    Hello.

    J'utilise dans mes templates de vues des layouts de recherche utilisant cette méthode :
    https://techjoomla.com/developers-bl...ist-views.html

    Tout fonctionne très bien sauf que je n'arrive pas à donner les valeurs initiales des champs.

    La seule formule trouvée est de donner une valeur "default" directement dans le xml du champ de recherche du layout.
    Ce qui ne me convient pas, j'ai besoin de modifier la valeur dynamiquement au premier accès de la vue.

    J'ai par exemple besoin de forcer la valeur list.limit (classe JModelList).

    Or un
    Code PHP:
    $this->setState('list.limit''100'); 
    dans la méthode populatestate du model n'a aucun effet sur le champ correspondant layout qui affiche toujours 25, alors que le nombre d’éléments du tableau $this->items est bien à 100.

    Si quelqu'un à une idée, car pour l'instant mes recherches n'ont rien données de positif.

    Bon WE à tous.
    Dernière édition par roland_d_alsace à 17/06/2017, 19h34
    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 ?

  • #2
    Re : Comment donner des valeurs initiales aux champs Jlayout

    Hello.

    Pour l'instant la seule formule que j'ai trouvé est de modifier la valeur des champs "filtre" du sous-formulaire (Layout) dans la méthode display de la vue par des
    Code PHP:
    $this->filterForm->setValue 
    Ce n'est pas très propre, et utile uniquement au premier passage dans la vue, mais cela fonctionne.
    Je peux donc initialiser les champs aux valeurs souhaitées.

    Pourtant lors d'un second passage et pour les suivants (après changement des valeurs des filtres), les propriétés 'value' dans champs filtres sont bien initialisées, mais je n'ai pas trouvé par quel mécanisme.

    La question reste donc "ouverte", si quelqu'un a la réponse et connait la méthode à utiliser.

    Bon dev à tous.
    Dernière édition par roland_d_alsace à 17/06/2017, 22h55
    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
      Re : Comment donner des valeurs initiales aux champs Jlayout

      Je pense que tu n'étais pas loin avec ton premier post. La pagination est un processus géré nativement par Joomla.
      Un composant peut intervenir dessus, mais il faut reprendre le contrôle des valeurs de pagination

      J'affecte ces valeurs en 2 étapes:
      Depuis la vue (view.html.php):
      Code PHP:
          $this->state $state    $this->get('State');
          
      $state->set('context''layout.moncontexte'); 
      et dans le Model, contexte concerné (default, si tu n'en as qu'un)
      C'est dans le GetListQuery ou PrepareQuery (fonction de constitution du query)
      Code PHP:
          protected function prepareQuery(&$query)
          {

              ......
              ......

              
      // Add the list start&limit clause.
              
      $this->setState('list.limit'30);
              
      $this->setState('list.start'5);
              
              return 
      $query;
          } 
      Dans mon cas si je set ces valeurs, ça affecte directement le résultat de la collection, qui démarre à 5 pour 30 items affichés ...
      Le footer de pagination est recalculé en fonction.
      Dernière édition par liubov à 18/06/2017, 00h10
      Developper of JBreeding Manager: http://www.jbreeding.fr/
      J-cook Referral : Service Générateur d'Extensions pour Joomla

      Commentaire


      • #4
        Re : Comment donner des valeurs initiales aux champs Jlayout

        Merci pour ta réponse.

        Toutefois, je pense que je ne me suis pas fait bien comprendre.

        Le problème n'est pas dans le comportement (dans la gestion de la pagination ou des paramètres de filtrage), tout ceci fonctionne bien (idem sans l'utilisation de Jlayout).
        Ici j'utilise le layout de filtrage joomla.searchtools.default par :
        Code PHP:
        echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this'options' => array('filtersHidden' => 1)); 
        dans le template de la vue.

        Le problème est uniquement dans l'affichage du layout où les valeurs par défaut ne sont pas sélectionnées.
        (Il y a très peu de documentation sur l'utilisation des layout, ce qui fait je je galère un peu).

        Les valeurs retournées par le layout 'searchtools' je les récupère sans soucis dans le model par des (exemple avec un champ de nom filtre_value) :
        Code PHP:
        $filtre_value $this->getUserStateFromRequest($this->context '.filter.filtre_value''filter_filtre_value',$default_value); 
        pour faire les traitements.

        Un autre exemple que la valeur de pagination : avec un filtre de type champ hérité de JFormFieldList avec sélections multiples (mais ceci est vrai pour tous les autres types de champ, j'en ai essayé plusieurs).

        Comment afficher les sélections dans le champ en question lors du premier affichage (ce qui est important si dans ton développement, dans tes paramètres de menus tu as prévu une pré-selection possible -donc différente de "all"- ou si la pré-selection des filtres est liée au contexte).
        Au premier affichage le champ est vide.

        Après un premier affichage, si l'internaute fait une sélection dans les filtres (ou dans la pagination, ou de tout autre champ du layout), quand la vue est ré-affichée, la sélection est ensuite bien affichée.

        C'est uniquement au premier affichage que je n'arrive pas à faire afficher les valeurs initiales (et c'est uniquement un problème d'affichage en utilisant JLayout).

        C'est pour cela que je suis obligé de forcer par
        Code PHP:
        $this->filterForm->setValue(...); 
        , juste pour le premier affichage, ce qui n'est pas normal.
        Dernière édition par roland_d_alsace à 18/06/2017, 10h25
        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


        • #5
          Re : Comment donner des valeurs initiales aux champs Jlayout

          Étonnant, car je viens de vérifier. Mes valeurs "défault" de tous mes filtres de collections sont bien pris en compte dès le premier affichage.
          => La valeur défault est bien soumise au Model.
          => Elle est visible dans l'objet (Combo Filter / Search / ...) lors de l'affichage de la collection.

          Je suppose que tu as bien une rubrique "default.filter" dans ton .xml du Model, à la suite de la définition des champs de données?
          Dans mon cas default="1" filtre la Race par défaut dont l'id=1.
          Code PHP:
          <fieldset name="default.filters" addfieldpath="/administrator/components/com_jbreeding/models/fields">
              
              <
          field name="filter_id_race"
                  
          listKey="id"
                  
          labelKey="value"
                  
          type="ckcombo"
                  
          default="1"
                  
          submit="true"
                  
          nullLabel="JBREEDING_FILTER_NULL_RACES"
                  
          class="span-2 element-filter"
                  
          label="JBREEDING_JSEARCH_RACES"
                  
          /> 

          Donc, ta mèthode est la bonne, je ne vois pas comment faire autrement.

          Côté traitement, si ton MVC est dans le standard:
          classe/models/list.php [JModelList]

          Code PHP:
          public function getForm($instance 'default.filters'$loadData true$control null){
                  
          $model CkJModel::getInstance($this->view_item'MyComponentModel');
                  
          $form $model->getForm(null$loadData$control);
          ... 
          c'est ici que tu récupères les valeurs (dont default) :

          -> de type Filter
          Code PHP:
          $form->setValue($filter_name''$value); 
          -> de type Search.
          Code PHP:
          $form->setValue($search_name''$value); 
          les autres type également, si besoin (sorttable, limit, direction, etc ...)
          au final, tu appliques les filtres ...
          Code PHP:
          $fieldSet $form->getFieldset($instance);
          return 
          $fieldSet
          Et ton Layout est maintenant filtré avec les valeurs par defauts.
          Dernière édition par liubov à 18/06/2017, 19h15
          Developper of JBreeding Manager: http://www.jbreeding.fr/
          J-cook Referral : Service Générateur d'Extensions pour Joomla

          Commentaire


          • #6
            Re : Comment donner des valeurs initiales aux champs Jlayout

            Hello.

            J'ai bien des propriétés "default" dans mon xml filter_nomdemavue.xml), mais je veux les modifier dynamiquement.

            Mais ce n'est pas le formatage que tu utilises, Jlayout demande :
            Code:
            <?xml version="1.0" encoding="utf-8"?>
            <form>
                <fields name="filter">
            ....
            En utilisant Jlayout, je n’appelle pas non plus la méthode getform dans le model.
            C'est une vue de type list, hormis le bloc des filtres, je n'utilise donc pas JForm pour l'affichage des Items.

            Le formulaire 'filtre' et ses sous formulaires (les filtres perso sont défini dans le xml filter_nomdemavue.xml) est retourné par l'appel de :
            Code PHP:
            $this->filterForm $this->get('FilterForm'); 
            dans le display de la vue.
            Avec cette instruction le framework de Joomla recherche alors le xml du sous-formulaires de nom filter_nomdemavue.xml dans les layouts de Joomla, puis dans .../com_moncomposant/models/forms/

            Le rendu du formulaire global standard joomla.searchtools.default sera ensuite calculé dans le template de la vue par l'instruction :
            Code PHP:
            echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this'options' => array('filtersHidden' => 1,))); 
            qui lui même chargera le sous-formulaire contenu dans $this->filterForm.
            (J'ai tracé le déroulement du code).

            Les filtres actifs sont retournées sous forme d'un array par :
            Code PHP:
            $this->activeFilters $this->get('ActiveFilters'); 
            Instruction aussi située dans la méthode display de la vue.

            et bien que dans ce tableau les filtres soient correctement valorisés lors du premier passage (j'ai vérifié le contenu toujours en mode xdebug), l'affichage des valeurs sélectionnées ne se fait pas (sauf si des default figurent dans le xml, auquel cas c'est cette sélection qui sera faite, mais pas en concordance avec la valeur de filtres).

            Par contre l'affichage se fait correctement (donc avec les champs sélectionnés et sans avoir besoin de faire des affectations
            Code PHP:
            $this->filterForm->setValue(...); 
            ) après que l'on ait sélectionné un filtre (donc au minimum au 2ème appel de la vue).

            Es-tu sur que tu utilises la classe Jlayout qui permet de factoriser des "blocs" de formulaires (layouts / sous-formulaires).
            (Et dans ce cas précis layout standard : joomla.searchtools.default dons les fichiers sont situés dans \layouts\joomla\searchtools\default)

            Dans tes explications, j'ai l'impression que tu utilises uniquement Jform et JFormfield et que tu utilises un formulaire unique de ta composition.
            Non ?

            En tous cas merci du temps que tu m'accordes.
            Dernière édition par roland_d_alsace à 18/06/2017, 19h51 Raison: précisions et corrections
            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


            • #7
              Re : Comment donner des valeurs initiales aux champs Jlayout

              Ok, effectivement, j'ai lu trop vite, et focalisé sur l'application des filtres, et j'ai zappé ton utilisation de JLayout.

              Oui, effectivement, de mon côté ce sont des instances JForm, et ces processus. Je connais mal JLayout, mais ton post m'intéresse, aussi je reviendrai si j'en apprends un peu plus du côté de mon générateur favori.
              (mais je pense qu'il n'exploite pas encore JLayout ...)
              Developper of JBreeding Manager: http://www.jbreeding.fr/
              J-cook Referral : Service Générateur d'Extensions pour Joomla

              Commentaire


              • #8
                Re : Comment donner des valeurs initiales aux champs Jlayout

                Je ne pense pas non plus.
                J'étais à ta présentation de Cook à Marseille.
                (Je crois d'ailleurs que c'est moi qui a posé le + de question, surtout concernant le code généré...)
                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
                  Re : Comment donner des valeurs initiales aux champs Jlayout

                  ha yes! ok.

                  J'espère que tu as pu jeté un œil. J'ai transmis l'url de présentation des slides et du composant JDayProgram, dans la dernière version du Builder
                  Developper of JBreeding Manager: http://www.jbreeding.fr/
                  J-cook Referral : Service Générateur d'Extensions pour Joomla

                  Commentaire


                  • #10
                    Re : Comment donner des valeurs initiales aux champs Jlayout


                    et bien que dans ce tableau les filtres soient correctement valorisés lors du premier passage (j'ai vérifié le contenu toujours en mode xdebug), l'affichage des valeurs sélectionnées ne se fait pas (sauf si des default figurent dans le xml, auquel cas c'est cette sélection qui sera faite, mais pas en concordance avec la valeur de filtres).

                    Par contre l'affichage se fait correctement (donc avec les champs sélectionnés et sans avoir besoin de faire des affectations)
                    c'est ça que je ne comprends pas dans ta description.
                    Que ce soit des filtres appelés par JForm ou JLayout, s'il n'y a pas de default="xxx", il ne peut pas y avoir de filtrage de la collection items au premier affichage ?!? sur quelle valeur ?
                    Developper of JBreeding Manager: http://www.jbreeding.fr/
                    J-cook Referral : Service Générateur d'Extensions pour Joomla

                    Commentaire


                    • #11
                      Re : Comment donner des valeurs initiales aux champs Jlayout

                      Envoyé par liubov Voir le message
                      c'est ça que je ne comprends pas dans ta description.
                      Que ce soit des filtres appelés par JForm ou JLayout, s'il n'y a pas de default="xxx", il ne peut pas y avoir de filtrage de la collection items au premier affichage ?!? sur quelle valeur ?
                      L'instruction
                      Code PHP:
                      $this->activeFilters $this->get('ActiveFilters'); 
                      utilisé dans la vue, retourne bien un tableau avec chaque valeur des filtres (nom du filtre en indice).
                      Logiquement elle appelle la méthode getActiveFilters du model (classe mère JModelList si non redéfinie dans la classe fille du model utilisé).

                      Cette méthode getActiveFilters :
                      • recherche les filtres définis dans la propriété $this->filter_fields
                      • regarde si la propriété filter.nom_du_filtre a été definie (et une valeur affectée)
                      • et l'affecte au tableau retourné


                      Et c'est pourquoi je ne comprends pas que Jlayout ne prend pas en compte ces valeurs au premier passage.
                      Ce qui m’oblige à les affecter directement dans le sous-formulaire par un $this->filterForm->setValue.
                      (alors que, j'en suis certain, ce n'est pas la bonne méthode -ou alors un bug peut-être ?-).

                      Classiquement, les filtres sont initialisés par les instructions faites dans la méthode populatestate du model.

                      Code PHP:
                      $this->setState('filter.nom_du_filtre'$valeur_du_filtre); 
                      Filtres dont les noms doivent être bien définis (comme à l’habitude, même sans utiliser JLayout) dans le constructeur du model :
                      Code PHP:
                      public function __construct($config = array())
                          {
                              if (empty(
                      $config['filter_fields'])) {
                                  
                      $config['filter_fields'] = array(
                                      
                      'nom_du_filtre',
                                      
                      'nom_du_filtre2',
                                      ....
                                  );
                              }
                              
                      parent::__construct($config); 
                      Dernière édition par roland_d_alsace à 19/06/2017, 11h51
                      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

                      Travaille ...
                      X