Обработка полей перед отправкой AjaxForm+FormIt

Добрый день!

На сайте есть форма такого типа:

<form action="#" class="test-visit-form ajax_form">
	<input class="input" type="text" name="name" placeholder="Ваше имя *">
	<input class="input" type="text" name="phone" placeholder="Номер телефона *">
	<select class="select-stroke" name="addressTo" data-placeholder="Выбрать филиал">
	    <option></option>
	    <option value="email1@mail.ru" >Филиал 1</option>
	    <option value="email2@mail.ru" >Филиал 2</option>
	</select>
	<input class="button default-fill big" type="submit" value="Отправить">
</form>


Данные отправляются средствами AjaxForm

[[!AjaxForm?
	&snippet=`FormIt`
	&hooks=`spam,email,FormItSaveForm`
	&formName=`Заявка с сайта `
	&formFields=`name,phone`
	&fieldNames=`name==Имя,phone==Номер телефона`
	&form=`tpl.ajaxform.club`
	&emailTpl=`tpl.message.form`
	&emailSubject=`Заявка с сайта`
	&emailFrom=`robot@mail.ru`
	&emailTo=`[[+addressTo]]`
	&validate=`phone:required,addressTo:required`
	&validationErrorMessage=`В форме содержатся ошибки!`
	&successMessage=`Сообщение успешно отправлено!`
]]

Форма работает. Все отлично.
Теперь на сайте необходимо сделать синхронизацию форм со сторонним сервисов.

Вот что прислала поддержка сервиса:

ссылку мы дадим вам чуть позже — пока попробуйте подготовить верно параметры, чтобы получалась верная подпись.
когда подпись настроите — скажите.

пост или гет — безразницы

с параметрами определились:
host=www.fitness.ru&name=Иванов Иван Иванович&phone=79160413045&email=w@mail.ru×tamp=63680656072&signature=c20ad4d76fe97759aa27a0c99bff6710
фио можно разбить:
fname=Иван&lname=Иванов&pname=Иванович
в utf8 все
urlencoded
в запрос вставляется timestamp — времся в секундах… есть вроде в пхп
оно нужно для придания уникальности
все это пдписывается подписью
т.е. — signature- это md5 от конкатенации всех параметров
+ secret
для проверки md5:
name=Ivanov×tamp=63680656065&phone=71111111112
secret=r8Sdk#4kfpfekf913
signature=md5(Ivanov.63680656065.71111111112.r8Sdk#4kfpfekf913)
15a0379c74e94f47fd6ad1de2b9c6f2d

как проверите получение подписи- сообщите

если что непонятно — говорите

host- это имя сайта с которого ты постиш

парамтеры по факту и по пост и по гет можно посылать
время ставь реально сервака

?name=Ivan×tamp=63680656065&phone=71111111112&signature=86adf70905ae2c1c9ee645c1c5a5ff21
еще одна строка для проверки

{«return»:[{«desc»:"\u0423\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e",«code»:0}]}

ответ в формате Json
code=0 — нет ошибок…
в другом случае будет не 0 и в desc — описание

Если сделать отправку данных с такой обработкой средствами PHP отдельным сниппетом, то думаю проблем не будет, тут не сложно.

Но менеджеры кто админят сайт, пользуются для статистики отображением писем в админке сайта в меню FormIt, где их можно отсортировать по видам форм и дат.
И будет перезагружаться страница сайта при отправке писем, что не хотелось бы.

Реально ли сделать дополнительные обработки с полями, перед отправкой письма средствами AjaxForm?

Необходимо чтобы письма с формы отправлялись на почту, сохранялись в админке сайта, синхронизировались по правилам со сторонним сервисом.

Помогите! В какую сторону копать? Либо возьмите в работу, готов обсудить цену.
Андрей Шевяков
14 апреля 2018, 09:42
modx.pro
1 843
0
Поблагодарить автора Отправить деньги

Комментарии: 1

Андрей
14 апреля 2018, 13:05
1
+1
Можно написать свой хук — https://docs.modx.com/extras/revo/formit/formit.hooks#FormIt.Hooks-CustomHooks, в котором будет обрабатываться то что вам нужно.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1