We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25127
    • 22 Posts
    Voilà, je tourne en rond avec maketable..

    j’arrive à afficher un tableau mais je ne sais pas comment personnaliser par exemple la largeur du tableau, rendre un cellule cliquable pour pointer sur une nouvelle page et son détail issu aussi d’une bdd.... Si quelq’un pouvait me montrer un peu de facon générique un exemple dans ce sens avec makeTable . Surtout que je ne suis pas trop à l’aise avec les classes et instanciation et affectation de valeur avec des methodes à plusieurs variables.

    Merci d’avance pour vos réponses !
      • 11975
      • 2,542 Posts
      salut,

      toutes les methodes de makeTable sont documentées dans le source de la classe.

      <?php
      
      $table = new MakeTable();
      
      //style css a appliquer
      
      $table->setTableClass($tableClass);//class du <table>
      $table->setRowHeaderClass($rowHeaderClass);//class des tetes de colonnes
      $table->setRowRegularClass($rowRegularClass);//class alternance de ligne
      $table->setRowAlternateClass($rowAlternateClass);//idem
      
      // les header de colonne et les données 
      //tableau associatif
        $TableHeader = array(
              'tvVarID'=>'tvVarID',                           
              'current'=>'Current TV value',
              'docid'=>'docID', 
              'pagetitle'=>'Page title',
              'action'=>'Action'
                  );
              
              $tableRow = array();
      //  $documentList est le resultat d'une requete SQL
              foreach($documentList as $k => $docValue){
                  $tableRow [] = array(             
                      'tvVarID'=>$docValue['tvVarID'],                           
                      'current'=>$docValue['value'],
                      'docid'=>$docValue['docID'], 
                      'pagetitle'=>$docValue['pagetitle'],
                      'action'=>'<a href="index.php?a=27&id='.$docValue['docID'].'" ><img src="../assets/modules/tvEditor/img/page_white_edit.png" alt="Edit document" title="Edit document" /></a>'
                      );
              }
      //on cree un tableau contenant les valeurs de la taille des colonnes
      //j'ai 5 colonnes donc il me faut
      $columnWidth = array(30,100,150,150,100);
      //on passe les tailles à l'instance
      $table->setColumnWidths($columnWidth);
      
      //on genere le tableau
      $output = $table->create($tableRow,$TableHeader);
      
      return $output;
      



      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 25127
        • 22 Posts
        je viens de me rendre compte qu’en fait j’utilisais un widget et pas la classe MakeTable. Bref, je patauge bien....

        Donc pour utiliser cette classe , je cree un snippet ’monSnippet’ avec ce que tu viens de m’indiquer mais comment afficher dans un document ’maPage’ ?
        peux-tu me preciser ?

        Merci d’avance,
          • 11975
          • 2,542 Posts
          re,

          c’est un exemple de code, il n’est pas universel.
          Il faudra rajouter quelques lignes pour le rendre actif.

          Une fois que tu as écrit ton snippet, tu l’enregistres dans la base de données de modx:
          => nouveau snippet depuis le manager dans gestionnaire de ressources.
          Tu lui donnes un nom
          Par exemple : maTable

          Ensuite, tu pourras l’appeler depuis un chunk, un document, un template .
          [[maTable]] ou [!maTable!]
          L’output se fera à l’endroit de l’appel du snippet car il est programmé dans ce sens.
          On pourrait tout aussi bien écrire le snippet différemment pour utiliser un placeholder.

          :-)
            Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
            • 25127
            • 22 Posts
            Top merci pour tes explications, heliosuperman ! wink
            j’arrive enfin a sortir qqchose.... undecided

            Maintenant, en repartant de ton exemple, comment faire en sorte pour ouvrir une page ’détail’ à partir de l’action de cellule clicquable en sachant que je suis en ’friendly google’ et que sur le clic, je veux déclencher une requête sql pour pour aussi faire un tableau sur cette page ’detail’ (à partir de ’id’)...

            En espérant être assez clair et que cela serve aussi à tous les bourrins comme moi de la communauté modx.

            Merci encore!
              • 11975
              • 2,542 Posts
              Salut,

              pas sur d’avoir saisi ta demande.

              Si l’id correspond à une id MODx, dans ce cas il faut utiliser la fonction makeUrl de modx
              Ensuite pour récupérer les variable afin de construire le nouveau tableau, il faut inclure dans ton snippet la gestion de variables passées en $_GET.

              :-)

              EDIT: si c’est une id modx, inutile de chercher l’id dans l’url.
              $modx->documentObject[’id’] retourne la valeur de l’id du document courant.
                Made with MODx : [url=http://www.copadel.com]copadel, fruits et l