Есть такой странный модуль в Битрикс, как формы. Довелось мне именно с него начать знакомство с Битрикс. Я хотел уйти и с Битрикс и с веб-разработки после такого. Думал, дальше только хуже. Ан нет. Но давайте все же к задаче.
Есть у вас рабочая форма. Как в ее результат добавить поле с URL страницы, на которой заполнили форму? По идее, по логике всех других модулей Битрикс, достаточно завести поле, не выводить его в шаблоне, и воспользоваться обработчиком onBeforeResultAdd, подсунув адрес страницы в поля перед сохранением. Как бы не так, чтобы им воспользоваться, надо все равно поле вывести в шаблон, и скрыть его css-ом. С тем же успехом его можно и сразу заполнять, оставляя скрытым.
На помощь приходит обработчик onAfterResultAdd, в котором мы работаем с результатом уже после его изменения. И как самый простой вариант, воспользуемся не вопросами формы, а полями:
Таким образом, если добавить текстовое поле с идентификатором FIELD_URL, то код обработчика на дополнение результата адресом страницы будет выглядеть вот так:
AddEventHandler('form', 'onAfterResultAdd', 'my_onAfterResultAddUpdate');
function my_onAfterResultAddUpdate($formId, $resultId) {
if ($formId == 1) {
CFormResult::SetField($resultId, 'FIELD_URL', 'http://'.SITE_SERVER_NAME.$GLOBALS['APPLICATION']->getCurPageParam());
}
} |
.
но вот функция выдает какой-то мусор по которому не определить что это за страница
Страница заполнения http://мойдомен.ru/ajax/form.php?form_id=CALLBACK&data-trigger=%7B%22class%22%3A%22callback-block+animate-load+twosmallfont+colored++white+btn-default+btn+clicked%22%2C%22data-event%22%3A%22jqm%22%2C%22data-param-form_id%22%3A%22CALLBACK%22%2C%22data-name%22%3A%22callback%22%7D