Дополнение результатов веб-формы на примере URL страницы заполнения формы

  • Дополнение результатов веб-формы на примере URL страницы заполнения формы

    Антон Долганин 16 Декабря 2015 6:49 14367
    Есть такой странный модуль в Битрикс, как формы. Довелось мне именно с него начать знакомство с Битрикс. Я хотел уйти и с Битрикс и с веб-разработки после такого. Думал, дальше только хуже. Ан нет. Но давайте все же к задаче.

    Есть у вас рабочая форма. Как в ее результат добавить поле с URL страницы, на которой заполнили форму? По идее, по логике всех других модулей Битрикс, достаточно завести поле, не выводить его в шаблоне, и воспользоваться обработчиком onBeforeResultAdd, подсунув адрес страницы в поля перед сохранением. Как бы не так, чтобы им воспользоваться, надо все равно поле вывести в шаблон, и скрыть его css-ом. С тем же успехом его можно и сразу заполнять, оставляя скрытым.

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

    2015-12-16_09-54.png

    Таким образом, если добавить текстовое поле с идентификатором 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());
       }
    }


    .
ivan panfilov
16 Декабря 2015 20:52
а плчему код на старом ядре?
Антон Долганин
17 Декабря 2015 5:24
Битрикс пока не думает переводить этот модуль :)
Андрей
27 Февраля 2016 10:33
А почему бы не воспользоваться hidden элементом и в качестве значения - $APPLICATION->GetCurPage() ?
Антон Долганин
27 Февраля 2016 12:17
В моем случае у форм было несколько шаблонов, не хотелось по всем прыгать. Плюс в некоторых случаях нельзя разрешать пользователю влиять на результат такого поля. Но в целом у вас тоже вариант конечно.
артем
19 Сентября 2017 11:35
у меня слетает верста после установки
Анатолий Теорский
9 Января 2018 11:40
у вас получилось?
Анатолий Теорский
9 Января 2018 11:40
Можете пожалуйста по подробней прописать как это реализовать. ПОЖАЛУЙСТА
Алексей
15 Июля 2020 11:28
Все сделал по мануалу, добавил код в init, поле в форму, текст и тег в почтовый шаблон
но вот функция выдает какой-то мусор по которому не определить что это за страница

Страница заполнения 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