API Битрикс для работы с формами
В Битрикс работу с формами можно разделить на две сущности:
- Работа на уровне почтовых шаблонов и событий, результат заполнения в админке видно не будет
- Работа с модулем форм, все заполненые програмно формы будут отображаться в админке, модуль
form
доступен не во всех редакциях
Работа на уровне почтовых шаблонов и событий
При реализации отправки будут рассмотрены два метода:
// старый метод
CEvent::Send()
// аналог метода CEvent::Send в новом ядре D7
Event::send()
Создаем и настраиваем тип события
Для этого переходим в Настройки -> Настройки продукта -> Почтовые и СМС события -> Типы событий
. Задаем название типа события и заполняем поля по образцу:
Создаем и настраиваем почтовый шаблон
Для этого переходим в Настройки -> Настройки продукта -> Почтовые и СМС события -> Почтовые шаблоны
. Выбираем ранее созданный тип события и заполняем поля по образцу. В самом низу страницы, есть подсказка по доступным полям:
Отправка средствами Битрикс в старом ядре
// SEND - тип почтового события, s1 - ид сайта, в массиве поля на отправку, 2 пустых необязательных параметра, в конце массив ид файлов) */
CEvent::Send("SEND", 's1', array(
"AUTHOR" => $name,
"AUTHOR_EMAIL" => $email,
"TEXT" => $text,
),
'',
'',
$arF
);
// обнуление объекта
unset($name);
Отправка средствами Битрикс в новом ядре
// подключение модуля Event
use Bitrix\Main\Mail\Event;
// SEND - тип почтового события, s1 - ид сайта, C_FIELDS поля на отправку, 2 пустых необязательных параметра, FILE массив ид файлов
Event::send(array(
"EVENT_NAME" => "SEND",
"LID" => "s1",
"C_FIELDS" => array(
"AUTHOR" => $name,
"AUTHOR_EMAIL" => $email,
"TEXT" => $text,
),
"FILE" => $arF,
));
Работа с модулем
При помощи CFormResult::Add
можно добавлять результаты сразу в админку, причем абсолютно из любой HTML формы. Рассмотрим, как можно сохранять результат в 1С-Битрикс при помощи стандартного модуля.
Предположим, вы уже настроили поля для своей формы, создали статусы и дали нужные права. Нам понадобится эта таблица из документации для понимания формирования названий инпутов. Проше всего названия инпутов формы посмотреть в самой форме, для этого нужно вывести эту форму на страницу и посмотреть.
<?
// подключаем модуль
\Bitrix\Main\Loader::includeModule('form');
// массив инпутов
$arValues = array(
"form_text_2481" => htmlspecialchars($_POST['firstName']),
"form_email_2482" => htmlspecialchars($_POST['email']),
"form_text_2483" => htmlspecialchars($_POST['phone']),
);
// создает новый результат веб-формы, в случае успеха возвращает ID нового результата, в противном случае false
$RESULT_ID = CFormResult::Add('238', $arValues);
// создает событие в модуле Статистика, возвращает true в случае успеха, в противном случае false
CFormResult::SetEvent($RESULT_ID);
// создает почтовое событие для отсылки данных результата по e-mail, возвращает true в случае успеха, в противном случае false
CFormResult::Mail($RESULT_ID);
// создает событие в модуле CRM
CFormCRM::onResultAdded(238, $RESULT_ID);
Добавление кастомных полей в почтовый шаблон
Для добавления полей в почтовый шаблон:
Нужно отредактировать тип события: