FormIt динамические поля в шаблоне письма

Здравствуйте. В форме есть динамически добавляемые поля с name=«example[]»
Если в теле письма вставить [[+example]] то все значения выводятся в этом месте через пробел. Как это вывести в массиве или еще как то, что оформить в несколько строк в теле пиьсма?
MrKarandash
29 июня 2016, 19:05
modx.pro
2 861
0

Комментарии: 8

DocentBF
30 июня 2016, 00:35
+1
1.Вы можете написать сниппет и вызывать в чанке письма, например, так: [[!exampleFormat? &example=`[[+example]]`]].
2.Никто не запрещает посмотреть $_POST['example'], там будет массив значений.
3.Можно написать hook для FormIt. $hook->getValues(), а дальше делайте, что хотите.
    MrKarandash
    30 июня 2016, 09:24
    0
    Спасибо! Подскажите, каким образом потом хук может выводить эти значения в тело письма?
      Павел Романов
      30 июня 2016, 09:32
      +1
      Как обычно, плейсхолдерами: rtfm.modx.com/extras/revo/formit/formit.hooks#FormIt.Hooks-CustomHooks
        MrKarandash
        30 июня 2016, 15:24
        0
        сделал сниппет с именем dymanics:

        <?php
        $allFormFields = $hook->getValues();
        return true;

        в код шаблона письма вставил плейсхолдер [[+allFormFields]]
        Но он так и выводится просто текстом [[+allFormFields]]
          Павел Романов
          30 июня 2016, 15:36
          +1
          Вы пытаетесь получить значение поля из формы, да еще и без указания самого поля)).
          Вам же нужно записать значение в плейсхолдер:
          $hook->setValue('allFormFields','тут_то_что_нужно записать');
            MrKarandash
            30 июня 2016, 15:55
            0
            Все, понял, спасибо больше!
              MrKarandash
              05 июля 2016, 15:34
              0
              Еще несколько вопросов по поводу чистого PHP в этом вопросе:

              <?php
              $tip_poddonov = $hook->getValue('tip_poddonov');
              $maxweight = $hook->getValue('maxweight');
              $alldata = array ($tip_poddonov,$maxweight);
              $string = print_r($alldata, true);
              $modx->setPlaceholder('all', $string);
              return true;

              выводит в письме в таком виде:

              Array ( [0] => Array ( [0] => EUR, 800x1200x150 [1] => US, 800x1000x170 ) [1] => Array ( [0] => 1200 [1] => 1300 ) )

              Как теперь разделить эти данные к такому виду:

              Тип поддонов для грузов: EUR, 800x1200x150
              Макс. вес груза на палете, кг: 1200

              Тип поддонов для грузов: US, 800x1000x170
              Макс. вес груза на палете, кг: 1300
                Павел Романов
                05 июля 2016, 16:17
                0
                Попробуйте так:

                <?php
                $tip_poddonov = $hook->getValue('tip_poddonov');
                $maxweight = $hook->getValue('maxweight');
                $q = count($tip_poddonov);
                $count = 0;
                while($count < $q){
                    $string .= '<b>Тип поддонов для грузов:</b> '.$tip_poddonov[$count].'<br /><b>Макс. вес груза на палете, кг:</b> '.$maxweight[$count].'<br /><br />';
                    $count++;
                }
                $modx->setPlaceholder('all', $string);
                return true;
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8