formit игнорирует &emailTpl, помогите??!
Добрый день. Достался сайт на доработку — файлы не приходили в письмах. Нашел 2 формы отправки таких писем. С одной все нормально — файлы починил. А вот 2-я форма там есть нюанс — для каждой страницы формируется разные поля ввода через сниппет forma_snippet(код чуть ниже будет). у вот уже в ней есть проблема — formit игнорирует&emailTpl=`email_calctest.tpl` и как я понял отправляет письма через &hooks=`email`
Вот пример вызова:
И наконец код сниппета 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Вопрос: почему происходит игнор и как решить?
Комментарии: 15
А где сам email_calctest.tpl?
Вот держите:
<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>" : ''}
Тут не должно быть что-то вроде:
{$file != '' ? "<p><strong>Файл: </strong>"~$file~"</p>" : ''}
Или куда должны файлы выводиться?)
Я прописывал данную конструкцию и никакого файла не приходило.
Вот пример письма которое приходит:(*** я поставил чтобы скрыть реальные данные)
Вот пример письма которое приходит:(*** я поставил чтобы скрыть реальные данные)
Название страницы: Печать наклеек
Дизайн : Есть готовый макет
Вид материала: пленка цветная аппликационная
Ламинация: глянцевая
длина: 3
ширина: 3
Плоттерная резка: да
Выберите тираж: 200
name: Артём
company: Finger******
phone: +375291******
email: p***shko.****ers@gmail.com
msg:
checkboxVisitka: on
af action: 6e665afe31e984b026e6b1a939809c1a
То есть что с &emailTpl=`email_calctest.tpl`, что без — приходит всё равно вот это?
да все верно. Буквально 2 минуты назад проверял
&emailTpl=`email_calctest.tpl`
Чанк так и называется? Может без .tpl попробовать?)
Чанк так и называется? Может без .tpl попробовать?)
<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?
Добрый день. Да, так называется. С другой формой отправки письма, работает как часы, но я попробую.
Файлы в письмах в виде ссылок? Нет ссылок на файлы в письме, да? Пробовали без чанка посмотреть? Убрать &emailTpl=`email_calctest.tpl` и посмотреть что вообще приходит по полям?
Я убирал не только &emailTpl=`email_calctest.tpl`, но и &hooks=`email и все равно приходи как описано в «email»
1 пункт добавления файла всегда есть. 4 потому что добавляют еще 4 возможности выбрать файл.
<input type="file" name="sasha" value="123" hidden>
Это для теста?
это я тестил разные варианты интупа для отправки письма. Текст, чекбокс и textarea приходят без проблем. А вот поставишь file то ничего не приходит.
Честно сказать, сложно проследить путь, который проходят данные из формы) Может кто-то ещё сообразит. А что по параметрам сниппетов? В сниппете FormIt не запрещены файлы, например?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.