eForm: Примеры
- Дополнения
- eForm
- Примеры
Поддержать: USDT TRC20: TBGKTYDs4yzU17vQbobbUB8epFFtFb6PKh
6597
eForm: Примеры
eForm в модальном окне
Ситуация, когда надо вывести форму в модальном окне довольно частая. Выведем форму в модальном окне Bootstrap 3.
Модальное окно будет выглядеть примерно так:
Заголовок окна
[!eForm? &formid=`Form` &tpl=`tplForm` &report=`tplReport` &thankyou=`tplThank` &subject=`Сообщение с сайта [(site_name)]`!]
Чанк tplForm:
<form method="post" action="[~[*id*]~]" name="Form" id="Form">...</form>
Чанк tplThank:
Ваше сообщение отправлено.
Ну и последний штрих, нужно разместить примерно такой скрипт:
<script>
$(function(){
$(document).on("submit","#Form",function(e){
e.preventDefault();
var m_method=$(this).attr('method');
var m_action=$(this).attr('action');
var m_data=$(this).serialize();
$.ajax({
type: m_method,
url: m_action,
data: m_data,
resetForm: 'true',
success: function(result){
var data = $(result).find("#myModal_form").html();
$("#myModal_form").html(data);
}
});
});
});
</script>
eForm Ajax Submit
Создаем примерно такой вызов eForm, обернут в диве с id ajaxContactForm - обротите внимание что по этому id и будет вся привязка.
Тут конечно можно ставить сразу форму без вызова через eForm, её же полюбому оброботает плагин.
[(cfg_from)], [(cfg_email)] - ТВ переменные сайта сохранённые в системной таблицы с помощью плагина CfgTv.
[!eForm? &formid=`contactForm` &subject=`Сообщение с сайта [(site_name)]` &tpl=`formTpl` &errorTpl=`errorTpl` &report=`reportTpl` &thankyou=`thankyouTpl` &gotoid=`244` &vericode=`0` &from=`[(cfg_from)]` &to=`[(cfg_email)]` !]
Скрипт Ajax обработки
Создаем плагин например AjaxSubmit который срабатывает на событие OnPageNotFound
switch($_GET['q']){
case 'ajaxContactForm':
echo $modx->runSnippet(
'eForm',
array(
'formid' => 'contactForm',
'subject' => 'Сообщение с сайта [(site_name)]',
'tpl' => 'formTpl',
'report' => 'reportTpl',
'thankyou' => 'thankyouTpl',
'errorTpl' => 'errorTpl',
'vericode' => 0,
'protectSubmit' => '0',
'from' => '[(cfg_from)]',
'to' => '[(cfg_email)]'
)
);
die();
break;
}