Bitrix

Автоматическое конвертирование результата вебформы

Бывают иногда просьбы сделать автоматическую фильтрацию или замену каких-либо символов в полях вебформы при сохранении результата вебформы в Битрикс. В этом посте я хочу показать как это можно сделать, обладая небольшими знаниями php. И в качестве бонуса постараюсь показать последовательность действий в поиске решения для реализации программного функционала для Битрикс.

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

Первое, что нужно сделать — посмотреть к каким событиям мы можем прицепиться, чтобы реализовать то, что мы хотим. После прочтения списка событий http://dev.1c-bitrix.ru/api_help/form/events/index.php можно заключить, что искомое событие — onBeforeResultAdd. Оно вызывается при добавлении нового результата формы.

Заготовка кода будет выглядеть примерно так:
AddEventHandler(‘form’, ‘onBeforeResultAdd’, ‘onBeforeResultAddHandler’);

function onBeforeResultAddHandler($WEB_FORM_ID, $arFields, $arrVALUES)

{

}
В переменной $WEB_FORM_ID передается идентификатор формы, в $arrVALUES — поля результатов.
Функция преобразования в верхний регистр — strtoupper, но поскольку предполагается преобразование в том числе и utf8 кодированных данных, то необходимо использовать функцию mb_strtoupper.
В итоге получаем такой код:
AddEventHandler(‘form’, ‘onBeforeResultAdd’, ‘onBeforeResultAddHandler’);

function onBeforeResultAddHandler($WEB_FORM_ID, $arFields, $arrVALUES)

{

foreach($arrVALUES as $key=>&$val)

if (strpos($key, «text»)!==false)

$val = mb_strtoupper($val);

}


Строка strpos($key, «text»)!==false необходима для того, чтобы определять является ли данное поле текстовым.

Представленный выше код нужно поместить в файл /bitrix/php_interface/init.php

Один комментарий

Отставить комментарий

Ваш электронный адрес не будет опубликован.Обязательные для заполнения поля отмечены *

один × 4 =