Приклади сніпета eForm для створення зворотного зв'язку, замовлення дзвінка, оформлення замовлення товарів на Evolution CMS.
Ситуація, коли треба вивести форму в модальному вікні досить часта. Виведемо форму в модальному вікні Bootstrap 3.
Модальне вікно буде виглядати приблизно так:
Чанк 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, обгорнутий у діві з 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; }