линия

Главная

пятница, 27 мая 2016 г.

Почтовое событие при добавлении данных в инфоблок

Задача.
Есть форма. Нужно добавить данные с формы AJAX-методом в информационный блок и  еще чтобы инициировалось почтовое событие.

Решение.
Покумекав смекнул, что трудо-время затраты можно уменьшить если все это дело запилитть самому.
1. открываем файл bitrix/php_interface/init.php
2. добавляем код
if(isset($_POST['email']) ){
 CModule::IncludeModule('iblock'); 
 $el = new CIBlockElement;
    $PROP = array();
    $PROP[1] =$_POST['email'];  // свойству с кодом 1 - email
    $PROP[2] = '';        // свойству с кодом 2 - phone

$arLoadProductArray = Array(
  "MODIFIED_BY"    => 1, // элемент изменен текущим пользователем
  "IBLOCK_SECTION_ID" => false,          // элемент лежит в корне раздела
  "IBLOCK_ID"      => 2, // номер IBLOCK_ID
  "PROPERTY_VALUES"=> $PROP,
  "NAME"           => $_POST['name'],
  "ACTIVE"         => "Y",            // активен
  //"PREVIEW_TEXT"   => "",
  //"DETAIL_TEXT"    => "",
  //"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
  );

$PRODUCT_ID = $el->Add($arLoadProductArray);
// ПОЧТОВОЕ СОБЫТИЕ
$arSend = array(
   "FIO" => $_POST['name'], 
   "PHONE" => $phone, 
   "EMAIL" =>$_POST['email'], 
   //"TEXT" => $text, 
   );
 CEvent::Send('FEEDBACK_FORM',SITE_ID,$arSend);
 
}






3.подключаем JQuery
4. пишем простой код на JavaScript
$(document).ready(function() {
   //$(".phone").mask("+7 (999) 999-99-99",{placeholder: " " },{completed:function(){}});
 $('form').submit(function() {
  var form = $(this);
  var error = false;
  form.find('input').each(function() {
   if ($(this).val() == '' && $(this).attr("id") != 'fmail')
   {
    error = true;
    alert('Необходимо заполнить поля');
    $(this).focus();
    return false;
   }
  });
  if (!error)
  {
   var furl = form.attr("action");
   var fparams = '';
   var aParams = new Array();
   for (var i = 0; i < this.elements.length; i++) {
    var sParam = encodeURIComponent(this.elements[i].name);
    sParam += "=";
    sParam += encodeURIComponent(this.elements[i].value);
    aParams.push(sParam);
   }
   fparams = aParams.join("&");
    //console.log(fparams);
   $.ajax({
    type: "POST",
    url: furl,
    data: fparams,
    success: function(msg) {
        
     if (msg !== 'error')
     {
      form.find('input[type=text]').val('');
      form.find('textarea').val('');
      alert("Благодарим за заявку!\r\nНаш специалист свяжется с вами в течение дня.");
      if (open)
      {
       open = false;
      }
     }
     else
     {
      alert('Ошибка');
     }
    },
    error:function(msg) {console.log(msg); }
   });
  }
  return false;
 });
});

5. Код формы.

Имя


E-mail

6. Идем пить кумыс.

то чувство когда видищь код Bitrixa

7. Но вдруг ты встрепетнешься и спросишь: Надо ли проверять входные данные на стороне сервера, и я отвечу ДА



Комментариев нет:

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