We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 20394
    • 134 Posts
    Bonjour,
    afin de profiter de mon éditeur de texte pour les snippets, j’enregistre le code du snippet dans "assets/snippets" et je cherche ensuite à inclure ce fichier dans un snippet, par exemple comme suit :
    $snippy=<<<IIG
    include("assets/snippets/myDropMenu.php");
    IIG;
    
    modx->evalSnippet($snippy);

    Cela ne fonctionne pas :’( J’obtiens :
    Parse error: syntax error, unexpected T_OBJECT_OPERATOR in C:\wamp\www\modx-0.9.2.1\manager\includes\document.parser.class.inc.php(705) : eval()’d code on line 6
    J’avais vu un post décrivant la marche à suivre mais je ne le retrouve pas. Pourriez-vous me l’indiquer ou me donner la solution ?
      • 22221
      • 283 Posts
        • 33175
        • 711 Posts
        Merci de ta réponse OncleBen31 smiley

        En quelques mots, tu n’as pas besoin d’utiliser $modx->evalSnippet();, c’est fait en automatique par Modx.
        Dans ton snippet, tu dois simplement faire un include() de ton fichier php.
        Le snippet que tu as créé doit renvoyer les données à afficher à l’écran à l’aide de return.
        Ces données sont récupérées par Modx qui ensuite s’ocuppe de l’affichage et de la mise en page générale de ta page.

        @mrcou: j’ai édité ton post pour mettre l’erreur en citation à la place du "glow". C’est plus lisible ainsi et moins agressif. Avec le glow, c’est difficile de lire le message et ensuite de répondre à ton problème wink
          Sorry for my english. I&#39;m french... My dictionary is near me, but it&#39;s only a dictionary !
          • 2472
          • 151 Posts
          J’ai developpé plusieurs snippets pour pour mon site et je suis en train de les réorganiser avec deux librairies de code externe à modx.

          La librarie ...dbio... englobe tous mes accès base de données et la ...dcio... gère l’affichage des résultats, le tout est assemblé dans le snippet, ce qui donne par exemple:

          [tt]$html = ’’;

          require_once( ’./assets/templates/avander/lib.dbio.php’);
          require_once( ’./assets/templates/avander/lib.dcio.php’);

          if ( isset( $prov))
          {
          $resArray = getPricesPerProvince( $prov);
          }
          else
          {
          $resArray = getPrices();
          }

          $html = showPrices( $resArray);
          return $html;
          [/tt]

          Ca donne un snippet lèger et propre, le code redondant dans les librairies est réutilisable et maintenable.
            A thing of beauty is a joy forever ( John Keats)
            • 20394
            • 134 Posts
            Bonjour,

            merci pour vos réponses smiley
            En réalité mon erreur venait d’ailleurs : le code de myDropMenu.php était un copier collé du Snippet DropMenu et ne contenait pas les balises php (<?php et ?>). Mea Culpa.
              • 18219
              • 826 Posts
              Je vois les bases de php ne sont pas respectées... laugh

              Peux-tu changer ton titre et indiquer que le sujet est [Réglé] ? wink
              Merci.
                Marc
                I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink