We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26604
    • 16 Posts
    Bonjour !

    CONTEXTE :
    - voici le contenu d’un fichier assets/includes/include1.php :
    <?php
      $var_test1='azerty';
    ?>

    - voici le code d’un snippet snpINCLUDE2 :
    <?php
      $var_test2='qwerty';
    ?>

    - en pour finir, voila le snippet principal :
    <?php
    include 'assets/includes/include1.php';
    $modx->runSnippet('snpINCLUDE2');
    
    echo '$var_test1 = '.$var_test1.'<br>';
    echo '$var_test2 = '.$var_test2.'<br>';
    ?>

    MON PROBLEME : ce snippet général provoque l’output suivant :
    $var_test1 = azerty
    $var_test2 =

    autrement dit il ne recupere pas le contenu de $var_test2

    Vous allez peut-etre me demander pourquoi je ne me contente pas du include, qui lui, permet bien de recuperer la valeur de $var_test1
    La raison c’est que en realité je vais faire $var_test2=$modx->makeUrl(75), et cette instruction makeUrl ne fonctionne pas si elle est incluse dans mon include1.php, elle ne fonctionne que dans le cadre d’un snippet

    MA QUESTION : est-il possible :
    - d’initialiser une $var dans un snippet1
    - d’appeler ce snippet dans un autre snippet2 avec $modx->runSnippet(’snippet1’)
    - de récupérer dans snippet2 la valeur de $var telle qu’initialisée dans snippet1

    merci par avance
    anthony
      • 11975
      • 2,542 Posts
      Salut,

      c’est normal que tu n’obtiennes rien ;-)

      Une fois que tu as demandé à modx d’executer le snippet avec son code actuel je vois mal comment tu porrais recuperer la valeur de la variable

      Si tu changes ton code pour

      <?php
        $var_test2='qwerty';
      return $var_test2;
      ?>
      
      


      et

      <?php
      include 'assets/includes/include1.php';
      $var_test2 = $modx->runSnippet('snpINCLUDE2');
      
      echo '$var_test1 = '.$var_test1.'<br>';
      echo '$var_test2 = '.$var_test2.'<br>';
      ?>
      


      ca fonctionnera.

      Pour communiquer des valeurs entre les snippets la meilleure methode est d’utiliser les fonction getPlaceholder et setplaceholder de l’api modx

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 26604
        • 16 Posts
        en fait j’ai commis l’erreur de penser que appeler un snippet revenait a placer le contenu du snippet au meme endroit que le $modx->runSnippet.

        je comprends la méthode que tu me suggere avec le return $var ds le snippet + le $var=$modx->runSnippet, cependant ca ne correspond plus a ce que je voulais faire, cad une sorte d’include ...

        bon, ben du coup finalement je vais me contenter d’appeler un snippetINCLUDE qui executera n instructions $modx->setPlaceholder, et puis je piocherais les variables dont j’ai besoin en fonction des cas

        merci en tout cas pour ta reponse tres rapide heliotrope
        anthony

        PS : peux tu me dire ou je peux trouver le changelog de la version 0.9.6 ? je m’attendais a le trouver facilement sur la homepage de modxcms.com, mais je ne le vois pas ....
          • 11975
          • 2,542 Posts
          Pour la changelog, désolé aucune idée.

          Pour runSnippet cela revient à utiliser la commande eval();
          dans le cas d’un plugin les choses sont différentes, dans ce cas ton include fonctionnerait car les plugins sont intégrés dans le code de MODx comme partie intégrante de ce dernier (c’est d’ailleurs pour cela qu’il ne faut pas utiliser les balises <?php ?> dans un plugin).

          :-)
            Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
            • 1876
            • 835 Posts
            Bonjour,

            Le changelog est dans le répertoire /install de l’archive.
              • 26604
              • 16 Posts
              Quote from: heliotrope at May 28, 2007, 12:00 PM
              Pour runSnippet cela revient à utiliser la commande eval();
              ben justement, je veux pas etre relou, mais puisque tu me dis ca, je viens de tester le code suivant qui fonctionne :
              <?php
              eval('$mavar2="azerty";');
              echo '$mavar2 = '.$mavar2;
              ?>


              Quote from: heliotrope at May 28, 2007, 12:00 PM

              dans le cas d’un plugin les choses sont différentes, dans ce cas ton include fonctionnerait car les plugins sont intégrés dans le code de MODx comme partie intégrante de ce dernier (c’est d’ailleurs pour cela qu’il ne faut pas utiliser les balises <?php ?> dans un plugin).
              bon, vu que je ne sais pas ce que c’est qu’un plugin MODx, je n’ai pas le temps de chercher de ce coté la, je vais me contenter d’un snippet snpIncludeGlobalVar qui fait des setPlaceholder

              anthony