Запись в инфоблок данных сохраняемых в Веб-форму

Запись в инфоблок данных сохраняемых в Веб-форму
Запись в инфоблок данных сохраняемых в Веб-форму

Запись в инфоблок данных сохраняемых в Веб-форму

Просмотров: 0
Комментариев: 0

Задача: Реализовать через веб-форму возможность отправки заявки на обработку услуги с прикрепленными документами, отправкa письма на e-mail и запись в инфоблок полученных полей.


Решение: Разместим на страницы компонент Заполнение в Веб-формы (form.result.new). Создадим Веб-форму с нужными нам полями (Сервисы – Веб-формы – Настройка форм - Создать).

После того как создадим форму и нужные нам поля, мои поля:

  • Фамилия Имя Отчество;
  • Дата рождения;
  • E-mail;
  • Контактный телефон;
  • Серия паспорта;
  • № паспорта;
  • Дата выдачи;
  • Код подразделения;
  • Место рождения;
  •  Адрес регистрации;
  • Заявление (прикрепляется файл word);
  • Свидетельство (файл jpeg, jpg, pdf);
  • План (файл jpeg, jpg, pdf).

Создаем Инфоблок с этими свойствами и не забываем указать "Код".

Загрузка файлов на сайт через формы частый вопрос но как сохранить загружаемый файл потом в инфоблок?

Для загрузки файла через форму input type="file" формируется массив схожий с массивом $_FILES[имя]. Пожэтому можно сразу пережать свойству файл значение  $_FILES['FILE'].  Тогда код загружаемого файла должен выглядить так:

"PROPERTY_VALUES" => array("FILE" => $_FILES['FILE'] 


После того как создали веб-форму и разместили компонент на страницы сайта. Открываем php_interface, создаем если не создана папка include – где хранятся все подключаемые в init.php файлы. Создаем файл: event_form.php и сохраняем в нем код:


<?
define('WEB_FORM_ID', 1); // Веб-Форма с ID = 1
define('IBLOCK_ID_ZAIVKA', 17); // ID Информационного блока
define('IBLOCK_SECTION_URLIC', 106); // ID Раздела в инфоблоке Юридические лица
AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');
    function my_onBeforeResultAdd($WEB_FORM_ID, &$arFields, &$arrVALUES)
    {
      global $APPLICATION;
// действие обработчика распространяется только на форму с ID=1
 if ($WEB_FORM_ID == WEB_FORM_ID)
      {if( CModule::IncludeModule('iblock')){
    $el = new CIBlockElement;
  // Список свойств передаваемых из формы в инфоблок
  $PROP = array();
  $PROP["ATT_LIF"] = $arrVALUES["form_date_2"]; //Дата рождения
  $PROP["ATT_EMAIL"] = $arrVALUES["form_email_3"]; //Адрес электронной почты
  $PROP["ATT_PHONE"] = $arrVALUES["form_text_4"]; //Контактный телефон
  $PROP["ATT_SERIAL"] = $arrVALUES["form_text_5"]; //Серия паспорта
  $PROP["ATT_N"] = $arrVALUES["form_text_6"]; //Номер паспорта
  $PROP["ATT_DATE_V"] = $arrVALUES["form_date_7"]; //Дата выдачи
  $PROP["ATT_PODRAZDEL"] = $arrVALUES["form_text_8"]; //Код подразделения
  $PROP["ATT_KEM_VAD"] = $arrVALUES["form_textarea_9"]; //Кем выдан
  $PROP["ATT_MESTO_ROJD"] = $arrVALUES["form_textarea_10"]; //Место рождения
  $PROP["ATT_REGISTER"] = $arrVALUES["form_textarea_11"]; //Адрес регистрации
  $PROP["ATT_FAIL_1"] = $_FILES['form_file_12']; //Свидетельство о гос. регистрации
  $PROP["ATT_FAIL_2"] = $_FILES['form_file_13']; //Ситуационный план
  $PROP["ATT_FAIL_3"] = $_FILES['form_file_14']; //Заявка о заключении договора      
 // Список свойств инфоблока в инфоблок
    $arLoadProductArray = array(
        "IBLOCK_ID" => IBLOCK_ID_ZAIVKA,
        "IBLOCK_SECTION_ID" => IBLOCK_SECTION_URLIC,
        "NAME" => $arrVALUES["form_text_1"],
        "PROPERTY_VALUES" => $PROP,
        "ACTIVE" => "N",
        "DATE_ACTIVE_FROM" => date("d.m.Y H:i:s"), //Передаем датау создания
    );
    $el->Add($arLoadProductArray);                                                 
        }
       }
    }
?>

На этом все, не забываем задавать права для инфоблока: Доступ - Для всех пользователей - Чтение.

Записная книжка:

Данные заметки ведутся преимущественно для нас. Возможно, подача материала сухая. Но вы можете задавать вопросы и обсуждать конкретную заметку в комментариях.