We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 20488
    • 353 Posts
    (Re)bonjour,

    Problème :

    Voici le code d’un snippet nommé "MonSnippet" :

    <?php
    function maFonction($i = 0,$tr='')
    {
      if($i<2)
      {
       $tr .= "I Love ModX.";
       maFonction($i+1,$tr);
      }
      else
      return ($tr);
       
    }
    
    return (maFonction());
    ?>


    L’appel à [[monSnippet]] ne retourne rien, alors qu’il devrait retourner une chaine de type "I Love ModX.I Love ModX.".

    Question :

    Peut on utiliser des fonctions récursives dans les snippets ?

    Merci pour votre aide wink

    ++
      • 6726
      • 7,075 Posts
      Désolé Olivier pour l’absence de réponse mais je pense qu’il faudrait poster ça dans le forum "Core Code"...

      Le futur parser de MODx (pour la 0.9.6 ou 0.9.7) sera capable de gérer la récursivité (un snippet pourra être un paramètre d’un autre snippet) mais pour le moment c’est limité.
        .: COO - Commerce Guys - Community Driven Innovation :.


        MODx est l&#39;outil id
        • 20488
        • 353 Posts
        Hello davidm,

        pas de souci, et mea culpa, j’aurais dû poster la réponse car j’arrive désormais à gérer ceci. A priori, il faut passer l’objet $modx en paramètre de la fonction pour que la récursivité soit prise en compte. A vérifier toutefois, mais en tout cas ca marche désormais. wink

        Exemple dans le snippet listRelated que j’ai modifié :

        if(!function_exists('getRecursiveAllChildren'))
        {
        	function getRecursiveAllChildren($modXObject,$idDoc,$arrayChildren = array())
        	  {
           	
        	 array_push($arrayChildren,$idDoc); 
        	 $arrayDocChild  = $modXObject->getAllChildren($idDoc);
        	 
        	 foreach($arrayDocChild as $id=>$val)
        		 $arrayChildren = getRecursiveAllChildren($modXObject,$val['id'],$arrayChildren);
        		
        	 return($arrayChildren);
        	  }
        }
        
        $tableau = getRecursiveAllChildren($modx,$val);
        
        


        ++