formit игнорирует &emailTpl, помогите??!

Добрый день. Достался сайт на доработку — файлы не приходили в письмах. Нашел 2 формы отправки таких писем. С одной все нормально — файлы починил. А вот 2-я форма там есть нюанс — для каждой страницы формируется разные поля ввода через сниппет forma_snippet(код чуть ниже будет). у вот уже в ней есть проблема — formit игнорирует&emailTpl=`email_calctest.tpl` и как я понял отправляет письма через &hooks=`email`
Вот пример вызова:
[[!AjaxForm?
  &form=`tpl_forma-redis`
  &snippet=`FormIt`
  &hooks=`email`
  &emailSubject=`Заказ c сайта`
  &emailTo=`aukly@mail.ru`
  &emailFrom=`info@vmeste-print.by`
  &emailTpl=`email_calctest.tpl`
  &validate=`name:minLength=^2^,phone:required`
  &validationErrorMessage=`В форме содержатся ошибки!`
  &successMessage=`Сообщение успешно отправлено!`
  ]]
А в tpl_forma-redis используется конструкция по выводу нужных полей для каждой страницы. Вот код:
[[!*select_form:ne=``:then=`
    
 <div class="row" style="padding-bottom:20px;" id="form_ankor">
      <img src="assets/template/site/images/calculator-2.png" style="float: left; padding-right: 10px; height: 50px;">
      <span style="font-size:20px;">Рассчитайте стоимость печати и оформите заказ онлайн:</span>
      <hr>
    </div>
<form action="#" class="comment-form-area" id="form1" enctype="multipart/form-data" method="post">
    <input type="hidden" name="Название_страницы" value="[[*pagetitle]]">
    <input type="hidden" name="mail" value="aukly@mail.ru">
    <input type="hidden" name="subject" value="Заказ c сайта">

    
      <div id="forma" class="row row-30" style="grid-template-columns: 50% 50%;
    display: inline-grid;">
       <strong> [[!forma_snippet? &select_form=`[[*select_form]]`]]</strong>
      </div>
           <div class="row">
         
        
          <div class="col-lg-6">
            <label for="af_name"></label>
        
            <input type="text" id="af_name" class="form-input" required="required" name="name" value="" placeholder="Ваше Имя *">
        
            <span class="error_name"></span>
          </div>
        
          <div class="col-lg-6">
            <label></label>
            <input type="text" id="af_company" class="form-input" name="company" value="" placeholder="Компания">
          </div>
        
          <div class="col-lg-6">
            <label for="af_phone"></label>
        
            <input type="text" id="af_phone" class="form-input" required="required" name="phone" value="" placeholder="Ваш телефон *">
        
            <span class="error_phone"></span>
          </div>
        
          <div class="col-lg-6">
        
            <label for="af_email"></label>
        
            <input type="email" required="required" id="af_email" class="form-input" name="email" value="" placeholder="E-mail *">
        
            <span class="error_email"></span>
          </div>

          <div class="col-lg-6">
            <label for="af_file"></label>
        
            <p>Выберите файл(ы), но не более 5 файлов</p>
            <p class="addfile" id="addP"><input type="file" class="form-input" name="file" multiple accept="image/*,image/jpeg">
            <input type="button" id="addB" value="+" onmousedown="viewAddfile1()"></p>
            <p class="addfile" id="addP1"><input type="file" class="form-input" name="file1" multiple accept="image/*,image/jpeg">
            <input type="button" id="addB1" value="+" onmousedown="viewAddfile2()"></p>
            <p class="addfile" id="addP2"><input type="file" class="form-input" name="file2" multiple accept="image/*,image/jpeg">
            <input type="button" id="addB2" value="+" onmousedown="viewAddfile3()"></p>
            <p class="addfile" id="addP3"><input type="file" class="form-input" name="file3" multiple accept="image/*,image/jpeg">
            <input type="button" id="addB3" value="+" onmousedown="viewAddfile4()"></p>
            <p class="addfile" id="addP4"><input type="file" class="form-input" name="file4" multiple accept="image/*,image/jpeg"></p>

            <span class="error_file"></span>
          </div>
          <script>
            function viewAddfile1(){
              document.getElementById("addP1").style.display = "flex";
            };
            function viewAddfile2(){
              document.getElementById("addP2").style.display = "flex";
            };
            function viewAddfile3(){
              document.getElementById("addP3").style.display = "flex";
            };
            function viewAddfile4(){
              document.getElementById("addP4").style.display = "flex";
            };
          </script>
      
        
        
          <div class="col-xs-12" id="fullwidth">
            <label></label>
            <textarea rows="5" type="tel" name="msg" class="form-input" placeholder="Комментарий к заказу"></textarea>
          </div>
          <div class="col-xs-12" id="capch_row">
            

            <script>alert(document.getElementById("maket1").value)</script>
            <button class="add-to-cart button button-lg button-secondary button-zakaria" id="capch_butt" type="submit" disabled>Рассчитать стоимость</button>
          </div>
<div class="col-xs-12" id="check_row">
  <div class="checkboxin">
    <input type="checkbox" name="checkboxVisitka" id="checkboxVisitka" onchange="document.querySelector('#capch_butt').disabled=!this.checked;" style="margin-bottom: 0;">
    <label for="checkboxVisitka">Ознакомлен с <a href="[[~630]]" target="blank">публичной офертой</a>.</label>
  </div>
</div>
       
        <input type="file" name="sasha" value="123" hidden>
        </div>
      </form>
        `]]
А вот код сниппета который и выводит поля для ввода или выбора:
<?php
if ($select_form){
  $id_form = explode('~',$select_form);
  $id = $id_form['0'];
  $output = '';
  
  $content = $modx->query("SELECT value FROM modx_site_tmplvar_contentvalues WHERE tmplvarid = 52 and contentid=".$id);
  $content = $content->fetch(PDO::FETCH_ASSOC);

  $mass = json_decode($content['value'],true);
  
  foreach ($mass as $mas){
    if ($mas['shoot_prop']=='Да'){
      $output .='<div class="switch-field">';
      $output .='<div class="switch-title">'.$mas['title'].'</div>';
      
      if ($mas['input']=='radio'){
        foreach (json_decode($mas['znach'],true) as $arr){
          if ($arr['title_disabl']){
              $title_disabl = $arr['title_disabl'];
            }else{
              $title_disabl = $arr['znachen'];
            }
            $output .='<input type="radio" data-disabled="'.$arr['disable'].'" data-title_disabled="'.$title_disabl.'" value="'.$arr['znachen'].'" name="'.str_replace('_',' ',$mas['title']).'" id="maket'.$mas['MIGX_id'].$arr['MIGX_id'].'" />';
            $output .='<label id="lmaket'.$mas['MIGX_id'].$arr['MIGX_id'].'" data-name="'.$arr['znachen'].'" for="maket'.$mas['MIGX_id'].$arr['MIGX_id'].'">'.$arr['znachen'].'</label>';
        }
      }else{
        if ($mas['znach']){
          $output .= '<div class="block_input">';
          foreach (json_decode($mas['znach'],true) as $arr){
            if ($arr['title_disabl']){
              $title_disabl = $arr['title_disabl'];
            }else{
              $title_disabl = '';
            }
            $output .= '<div class="pod_block_input">';
            $output .= '  <div class="switch-title">'.$arr['znachen'].'</div>';
            $output .= '  <input type="'.$mas['input'].'" data-disabled="'.$arr['disable'].'" data-title_disabled="'.$title_disabl.'" value="" name="'.str_replace('_',' ',$arr['znachen']).'" >';
            $output .= '</div>';
          }
           $output .= '</div>';
        }else{
          $output .= '<input type="'.$mas['input'].'" data-disabled="" data-title_disabled="" value="" name="'.str_replace('_',' ',$mas['title']).'" > шт.';
        }
      }
      
      $output .='</div>';
    }
  }
  
  return $output;
}

И наконец код сниппета email по шаблону которого и приходит письмо на почту:
<?php
$params = $modx->request->getParameters();

$message='';
$subject = $params['subject'];
$to = $params['mail'];

unset($params['mail']);
unset($params['subject']);

$headers  = "Content-type: text/html; charset=utf-8 \r\n"; 
$headers .= "From: $subject<info@".$_SERVER['SERVER_NAME'].">\r\n";

if ($params){
    foreach ($params as $key=>$value){
      $message .= '<p><span style="font-weight:500;font-size:1.2em">'.str_replace('_',' ',$key).'</span>: '.$value.'</p>';
    }
    
    if (mail($to, $subject, $message, $headers)){
      echo 'ok';
    }else{
      echo 'no';
    }
}else{
  echo 'no';
  
  
  //Выводим на сайте массив
$modx->log(1, print_r($array, 1),'HTML');
}
Кстати в письме приходит еще, что чекбокс о принятии правил публичной оферты checkboxVisitka проставлен — checkboxVisitka: on
Вопрос: почему происходит игнор и как решить?
Александр
13 июля 2021, 12:40
modx.pro
979
0

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

Роман
13 июля 2021, 15:50
0
А где сам email_calctest.tpl?
    Александр
    13 июля 2021, 16:32
    0
    Вот держите:
    <h1>Заказ {$page}</h1>
    <h3>Ссылка на страницу: {$_modx->makeUrl($_modx->resource.id)}</h3>
    <hr>
    <h2>Данные заказчика:</h2>
    {$name != '' ? "<p><strong>Имя зазказчика: </strong>"~$name~"</p>" : ''}
    
    {$phone != '' ? "<p><strong>Телефон: </strong>"~$phone~"</p>" : ''}
    
    {$email != '' ? "<p><strong>E-mail: </strong>"~$email~"</p>" : ''}
    
    {$company != '' ? "<p><strong>Компания: </strong>"~$company~"</p>" : ''}
    
    {$msg != '' ? "<p><strong>Комментарий: </strong>"~$msg~"</p>" : ''}
    
    <hr>
    <h2>Данные заказа:</h2>
    {$maket1 != '' ? "<p><strong>Наличие макета: </strong>"~$maket1~"</p>" : ''}
    
    {$side != '' ? "<p><strong>Сторона печати: </strong>"~$side~"</p>" : ''}
    
    {$material != '' ? "<p><strong>Вид материала: </strong>"~$material~"</p>" : ''}
    
    {$calc_size_castum_w != '' ? "<p><strong>Размер ширина: </strong>"~$calc_size_castum_w~"</p>" : ''}
    
    {$calc_size_castum_h != '' ? "<p><strong>Размер высота: </strong>"~$calc_size_castum_h~"</p>" : ''}
    
    {$calc_size != '' ? "<p><strong>Размер: </strong>"~$calc_size~"</p>" : ''}
    
    {$pechat != '' ? "<p><strong>Вид печати: </strong>"~$pechat~"</p>" : ''}
    
    {$calc_paper != '' ? "<p><strong>Бумага основная / обложка: </strong>"~$calc_paper~"</p>" : ''}
    
    {$calc_thickness != '' ? "<p><strong>Плотность бумаги / обложки: </strong>"~$calc_thickness~"</p>" : ''}
    
    {$calc_colors != '' ? "<p><strong>Цветность / обложки: </strong>"~$calc_colors~"</p>" : ''}
    
    {$calc_print != '' ? "<p><strong>Печать: </strong>"~$calc_print~"</p>" : ''}
    
    {$calc_format != '' ? "<p><strong>Формат: </strong>"~$calc_format~"</p>" : ''}
    
    {$calc_count != '' ? "<p><strong>Количество листов: </strong>"~$calc_count~"</p>" : ''}
    
    {$calc_kalendar != '' ? "<p><strong>Вид календаря: </strong>"~$calc_kalendar~"</p>" : ''}
    
    {$calc_setka != '' ? "<p><strong>Календарная сетка: </strong>"~$calc_setka~"</p>" : ''}
    
    {$calc_luvers != '' ? "<p><strong>Вид крепления: </strong>"~$calc_luvers~"</p>" : ''}
    
    {$calc_reklama != '' ? "<p><strong>Количество рекламных полей: </strong>"~$calc_reklama~"</p>" : ''}
    
    {$dlina != '' ? "<p><strong>Длина: </strong>"~$dlina~" см.</p>" : ''}
    
    {$hirina != '' ? "<p><strong>Ширина: </strong>"~$hirina~" см.</p>" : ''}
    
    {$qt != '' ? "<p><strong>Тираж: </strong>"~$qt~" шт.</p>" : ''}
    
    {$calc_qt != '' ? "<p><strong>Тираж: </strong>"~$calc_qt~"</p>" : ''}
    
    {$time != '' ? "<p><strong>Время изготовления: </strong>"~$time~"</p>" : ''} 
    
    {$calc_time != '' ? "<p><strong>Время изготовления: </strong>"~$calc_time~"</p>" : ''} 
    
    {$calc_bigovka != '' ? "<p><strong>Биговка: </strong>"~$calc_bigovka~"</p>" : ''} 
    
    {$calc_postwork != '' ? "<p><strong>Постобработка: </strong>"~$calc_postwork~"</p>" : ''} 
    
    {$qt_block != '' ? "<p><strong>Количество {$qt_block_type}: </strong>"~$qt_block~"</p>" : ''} 
    
    {$calc_paper_block != '' ? "<p><strong>Бумага для блока: </strong>"~$calc_paper_block~"</p>" : ''}
    
    {$calc_thickness_block != '' ? "<p><strong>Плотность бумаги блока: </strong>"~$calc_thickness_block~"</p>" : ''}
    
    {$calc_colors_block != '' ? "<p><strong>Цветность блока: </strong>"~$calc_colors_block~"</p>" : ''}
    
    {$calc_binding != '' ? "<p><strong>Тип крепления блока: </strong>"~$calc_binding~"</p>" : ''}
    
    {$calc_cut != '' ? "<p><strong>Вырубка изделия: </strong>"~$calc_cut~"</p>" : ''}
    
    {$calc_falz != '' ? "<p><strong>Количество фальцев: </strong>"~$calc_falz~"</p>" : ''}
    
    {$calc_foil != '' ? "<p><strong>Наличие тиснения: </strong>"~$calc_foil~"</p>" : ''}
    
    {$calc_foil_color != '' ? "<p><strong>Фольга: </strong>"~$calc_foil_color~"</p>" : ''}
    
    {$calc_foil_klishe != '' ? "<p><strong>Изготовление клише: </strong>"~$calc_foil_klishe~"</p>" : ''}
    
    {$calc_round != '' ? "<p><strong>Скругление углов: </strong>"~$calc_round~"</p>" : ''}
    
    {$calc_uv != '' ? "<p><strong>Лакирование: </strong>"~$calc_uv~"</p>" : ''}
    
    {$сalc_lamin != '' ? "<p><strong>Ламинация: </strong>"~$сalc_lamin~"</p>" : ''}
    
    {$сalc_plotrez != '' ? "<p><strong>Плоттерная резка: </strong>"~$сalc_plotrez~"</p>" : ''}
    
    {$calc_result != '' ? "<p><strong>Цена, руб: </strong>"~$calc_result~"</p>" : ''}
    
    {$calc_prices != '' ? "<p><strong>Цена, руб: </strong>"~$calc_prices~"</p>" : ''}
      Andrey
      15 июля 2021, 17:55
      0
      Тут не должно быть что-то вроде:
      {$file != '' ? "<p><strong>Файл: </strong>"~$file~"</p>" : ''}
      Или куда должны файлы выводиться?)
        Александр
        16 июля 2021, 19:17
        0
        Я прописывал данную конструкцию и никакого файла не приходило.

        Вот пример письма которое приходит:(*** я поставил чтобы скрыть реальные данные)
        Название страницы: Печать наклеек
        
        Дизайн : Есть готовый макет
        
        Вид материала: пленка цветная аппликационная
        
        Ламинация: глянцевая
        
        длина: 3
        
        ширина: 3
        
        Плоттерная резка: да
        
        Выберите тираж: 200
        
        name: Артём
        
        company: Finger******
        
        phone: +375291******
        
        email: p***shko.****ers@gmail.com
        
        msg:
        
        checkboxVisitka: on
        
        af action: 6e665afe31e984b026e6b1a939809c1a
          Andrey
          16 июля 2021, 19:40
          0
          То есть что с &emailTpl=`email_calctest.tpl`, что без — приходит всё равно вот это?
            Александр
            16 июля 2021, 19:48
            0
            да все верно. Буквально 2 минуты назад проверял
      Andrey
      13 июля 2021, 17:22
      0
      &emailTpl=`email_calctest.tpl`
      Чанк так и называется? Может без .tpl попробовать?)
        Andrey
        13 июля 2021, 18:42
        0
        <p>Выберите файл(ы), но не более 5 файлов</p>
                    <p class="addfile" id="addP"><input type="file" class="form-input" name="file" multiple accept="image/*,image/jpeg">
                    <input type="button" id="addB" value="+" onmousedown="viewAddfile1()"></p>
                    <p class="addfile" id="addP1"><input type="file" class="form-input" name="file1" multiple accept="image/*,image/jpeg">
                    <input type="button" id="addB1" value="+" onmousedown="viewAddfile2()"></p>
                    <p class="addfile" id="addP2"><input type="file" class="form-input" name="file2" multiple accept="image/*,image/jpeg">
                    <input type="button" id="addB2" value="+" onmousedown="viewAddfile3()"></p>
                    <p class="addfile" id="addP3"><input type="file" class="form-input" name="file3" multiple accept="image/*,image/jpeg">
                    <input type="button" id="addB3" value="+" onmousedown="viewAddfile4()"></p>
                    <p class="addfile" id="addP4"><input type="file" class="form-input" name="file4" multiple accept="image/*,image/jpeg"></p>
        
                    <span class="error_file"></span>
                  </div>
                  <script>
                    function viewAddfile1(){
                      document.getElementById("addP1").style.display = "flex";
                    };
                    function viewAddfile2(){
                      document.getElementById("addP2").style.display = "flex";
                    };
                    function viewAddfile3(){
                      document.getElementById("addP3").style.display = "flex";
                    };
                    function viewAddfile4(){
                      document.getElementById("addP4").style.display = "flex";
                    };
                  </script>
        5 или 4?
          Александр
          15 июля 2021, 11:45
          0
          Добрый день. Да, так называется. С другой формой отправки письма, работает как часы, но я попробую.
            Andrey
            15 июля 2021, 16:49
            0
            Файлы в письмах в виде ссылок? Нет ссылок на файлы в письме, да? Пробовали без чанка посмотреть? Убрать &emailTpl=`email_calctest.tpl` и посмотреть что вообще приходит по полям?
              Александр
              16 июля 2021, 19:19
              0
              Я убирал не только &emailTpl=`email_calctest.tpl`, но и &hooks=`email и все равно приходи как описано в «email»
          Александр
          15 июля 2021, 11:46
          0
          1 пункт добавления файла всегда есть. 4 потому что добавляют еще 4 возможности выбрать файл.
            Andrey
            15 июля 2021, 17:56
            0
            <input type="file" name="sasha" value="123" hidden>
            Это для теста?
              Александр
              16 июля 2021, 19:31
              0
              это я тестил разные варианты интупа для отправки письма. Текст, чекбокс и textarea приходят без проблем. А вот поставишь file то ничего не приходит.
              Andrey
              16 июля 2021, 19:57
              0
              Честно сказать, сложно проследить путь, который проходят данные из формы) Может кто-то ещё сообразит. А что по параметрам сниппетов? В сниппете FormIt не запрещены файлы, например?
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                15