Форма обратного звонка AjaxForm на Fenom
Форма состоит из двух полей: имя и телефон
stopspam — кастомный хук для борьбы со спамом
isXcode — кастомный валидатор на заполнение полей ботом
Содержимое чанка callback.form:
Содержимое чанка callback.emailTpl:
{$_modx->runSnippet('!AjaxForm', [
'snippet'=>'FormIt',
'formName' => 'Заказ звонка',
'validationErrorMessage' => 'Форма содержит ошибки',
'formSelector' => 'af_callback',
'emailTo'=> $_modx->config.emailto,
'emailSubject'=>$_modx->config.http_host ~ ' - Заказ звонка',
'emailFrom'=>$_modx->config.emailsender,
'emailFromName'=>$_modx->config.site_name,
'form'=>'callback.form',
'emailTpl'=>'callback.emailTpl',
'hooks'=>'stopspam,email,FormItSaveForm',
'customValidators'=>'isXcode',
'validate'=>'phone:required,agree:required,xcode:isXcode',
])}
stopspam — кастомный хук для борьбы со спамом
isXcode — кастомный валидатор на заполнение полей ботом
Содержимое чанка callback.form:
<div id="callback" class="form-callback xform ajax_form af_callback">
<div class="xform__caption">
Перезвоним и ответим<br /> на все вопросы
</div>
<form action="">
<div class="xform__group">
<div class="xform__item">
<input type="text" name="name" placeholder="ФИО">
</div>
</div>
<div class="xform__group">
<div class="xform__item">
<input type="text" name="phone" placeholder="Телефон" data-mask="+7 (999) 999-99-99">
<input type="hidden" name="xcode" value="1" />
</div>
</div>
<div class="xform__group">
<label class="check-custom">
<input type="hidden" name="agree[]" value="0" />
<input type="checkbox" name="agree" value="Согласен" class="checkbox">
<span class="checkbox-custom"></span>
<span class="label">Согласие на обработку личных данных</span>
</label>
</div>
<div class="xform__button">
<button class="btn">Заказать звонок</button>
</div>
</form>
</div>
Содержимое чанка callback.emailTpl:
<p>С сайта {$_modx->config.http_host} оставлено сообщение.</p>
<p>
Имя: {$name ?: 'не указано'}<br />
Телефон: {$phone ?: 'не указано'}<br />
<br />
</p>
<p>Адрес страницы: {$_modx->resource.id | url : ['scheme' => 'full']}</p>
Нет комментариев