We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 40739
    • 4 Posts
    Bonjour, je débute avec modx revolution, j'ai lu pas mal de tutoriaux,et je bloque sur quelque chose qui semble vraiment simple au niveau de l'affichage de données issues d'un snippet.
    Voila en simplifiant le code du snippet
    foreach ( $classes as $classe ) {
        echo "<div class=\"uneclasse\">La classe de ".$classe['nom'];
        foreach ($classe['eleves'] as $eleve) {
            echo "Nom :".$eleve['nom']."<br>";
            echo "Prenom:".$eleve['prenom']."<br>";
        }
        echo "classe de type :"."classe['type']."<br>";
    }
    

    je suis bloqué par les deux boucles imbriquées et je n'arrive par à utiliser un seul chunk pour l'affichage .
    Je sais qu'il existe plusieurs méthodes pour afficher les données issues de ce type de code, mais ce qui m'intéresse c'est une méthode pour résoudre ce problème.
    Merci.

    This question has been answered by yves.dhenain. See the first response.

      • 33976 ☆ A M B ☆
      • 571 Posts
      Bonjour et bienvenue sur les forums Yves,

      Selon moi il faudrait utiliser 2 chunks : 1 "wrapper" pour chaque classe et un pour chaque élève.

      Niveau code cela donnerait quelchose comme

      // Chunk pour aficher une classe
      $wrapperChunk = 'nom-du-chunk-wrapper';
      // Chunk pour afficher un eleve
      $eleveChunk = 'nom-du-chunk-eleve';
      
      $output = array();
      foreach ( $classes as $classe ) {
          // Array qui va contenir tous les eleves
          $eleves = array();
          
          foreach ($classe['eleves'] as $eleve) {
              // On "formate" l'affichage des eleves
              $eleves[] = $modx->getChunk($eleveChunk, $eleve);
          }
          
          // On ajoute le formatage a l'array classe, dans un placeholder nomme "wrapper"
          $classe['wrapper'] = implode("\n", $eleves);
          // On ajoute l'affichage de la classe au listing
          $output[] = $modx->getChunk($wrapperChunk, $classe);
      }
      
      // On retourne le tout "rendu"
      return implode("\n", $output);
      


      Le premier paramètre de getChunk permet d'indiquer le nom du chunk à utiliser, le second paramètre (un array) permet de définir les valeurs des placeholders.

      Par exemple si le second arguement est

      array(
          'classe' => 'Nom de la classe',
      );
      


      le placeholder +classe (avec les crochets qui vont bien) affichera "Nom de la classe"

      En espérant être utile smiley
      • discuss.answer
        • 40739
        • 4 Posts
        Merci, cela m'a permis de comprendre un peu mieux le fonctionnement