Поддержать Проект

USDT TRC20

TBGKTYDs4yzU17vQbobbUB8epFFtFb6PKh

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
      • Обязательные параметры
      • Остальные параметры
      • События для PHP функций
      • Плейсхолдеры шаблона
      • Типы и форматы данных
      • Проверка данных
      • Защита от спама
      • Примеры
      • reCAPTCHA
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • eForm

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;
}