We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 43771
    • 2 Posts
    Только что начал изучать modx.

    Нужно переменную из одного сниппета получить во втором. Как это сделать?
    <html>
    <body>
    
    [[!test1?]]
    [[!test2?]]
    
    </body>
    </html>


    допустим переменная инициализируется в test1 и нужно получить её в test2

    -------------------------
    И заодно вопрос.
    почему при исплоьзовании в конце сниппета return
    например
    return 123 . $var

    он выдаёт на странице текст как print или echo?
    Ведь сниппет это кусок PHP кода.
    А в php return естественно ничего не печатает.

    -------------------------
    ещё вопрос

    Правильно ли вот как в верхнем примере добавлять блоки динамически генерируемого html кода с помощью PHP сниппетов?
    Или их надо в чанки вставлять?



    версия modx revolution 2.2.7 [ed. note: nameveiof last edited this post 13 years, 5 months ago.]
      • 43165
      • 13 Posts

      /*
      сниппет - test1 
      инициализируем переменную name
      */
      
      $name = 'john';
      
      /*передаем ее сниппету test2, который будет ее обрабатывать*/
      
      $result = $modx->runSnippet('test2', array(
                                           'name' => $name 
      ));
      


      ссылка на документацию http://rtfm.modx.com/display/revolution20/modX.runSnippet
        • 43771
        • 2 Posts
        Спасибо за ответ. Я искал, начал читать документацию но сам не нашёл.
        В интернете даже вычитал сомнительный способ передавать через глобальные переменные $_SERVER $_POST что мне показалось странным и кривым решением.
          • 46178
          • 1 Posts
          Quote from: serstovik at May 16, 2013, 07:50 AM

          /*
          сниппет - test1 
          инициализируем переменную name
          */
          
          $name = 'john';
          
          /*передаем ее сниппету test2, который будет ее обрабатывать*/
          
          $result = $modx->runSnippet('test2', array(
                                               'name' => $name 
          ));
          


          ссылка на документацию http://rtfm.modx.com/display/revolution20/modX.runSnippet

          А если сниппеты вызываются из шаблона, из разных мест?
            • 37237
            • 44 Posts
            Quote from: j13005 at Jan 04, 2014, 07:55 AM
            Quote from: serstovik at May 16, 2013, 07:50 AM

            /*
            сниппет - test1 
            инициализируем переменную name
            */
            
            $name = 'john';
            
            /*передаем ее сниппету test2, который будет ее обрабатывать*/
            
            $result = $modx->runSnippet('test2', array(
                                                 'name' => $name 
            ));
            


            ссылка на документацию http://rtfm.modx.com/display/revolution20/modX.runSnippet

            А если сниппеты вызываются из шаблона, из разных мест?
            [[test? &name=`[[test1]]`]]
            [i]
            И заодно вопрос.
            почему при исплоьзовании в конце сниппета return
            например

            return 123 . $var


            он выдаёт на странице текст как print или echo?
            Ведь сниппет это кусок PHP кода.
            А в php return естественно ничего не печатает.
            [/i]
            Сниппет - это не просто кусок php, сниппет - это сущность modx обрабатываемая парсером modx.
            return 123 . $var
            не выводит значение, а возвращает значение в то место от куда был сниппет вызван.
            -------------------------
            ещё вопрос

            Правильно ли вот как в верхнем примере добавлять блоки динамически генерируемого html кода с помощью PHP сниппетов?
            Или их надо в чанки вставлять?
            чем меньше тэгов modx - тем меньше работы парсеру, соответственно тем шустрее будет отображаться страничка. При небольшем кол-ве этих тегов, разница практически не ощутима. [ed. note: spector last edited this post 12 years, 9 months ago.]