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

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

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

    Есть у вас рабочая форма. Как в ее результат добавить поле с 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
у меня слетает верста после установки