Задать вопрос
@adam_carraway

Где искать обработчики форм на сайте bitrix?

Добрый день, на сайте есть несколько форм, сайт на 1c-bitrix. Мне нужно чтобы после отправки этих форм на сервер также эти данные отправлялись на другой сайт. Вопрос в том где искать обработчики этих форм ?
Одна форма находится в футере, где мне найти этот футер ?
Вот пример вызова формы
<div class="contacts__feedback">
		 <?$APPLICATION->IncludeComponent(
	"citfact:form",
	"feedback",
	Array(
		"AJAX" => "Y",
		"ALIAS_FIELDS" => array("NAME"=>"Как к Вам обращаться*","EMAIL"=>"Ваша электронная почта*","PHONE"=>"Ваш номер телефона*","MESSAGE"=>"Ваше обращение*",),
		"ATTACH_FIELDS" => array(),
		"BUILDER" => "",
		"CACHE_GROUPS" => "Y",
		"CACHE_TIME" => "36000000",
		"CACHE_TYPE" => "A",
		"COMPONENT_TEMPLATE" => "feedback",
		"DISPLAY_FIELDS" => array(0=>"NAME",1=>"EMAIL",2=>"PHONE",3=>"MESSAGE",4=>"",),
		"EVENT_NAME" => "FEEDBACK_FORM",
		"EVENT_TEMPLATE" => "",
		"EVENT_TYPE" => "",
		"ID" => "21",
		"REDIRECT_PATH" => "",
		"STORAGE" => "",
		"TYPE" => "IBLOCK",
		"USE_CAPTCHA" => "N",
		"USE_CSRF" => "Y",
		"VALIDATOR" => ""
	)
);?>
	</div>

UPD где искать компонент
<?$APPLICATION->IncludeComponent(
	"citfact:form",
	"feedback",

?
  • Вопрос задан
  • 4665 просмотров
Подписаться Средний Комментировать
Решения вопроса 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
citfact:form скорее всего кастомизированый компонент bitrix:feedback

так как этот компонент не стандартный, то его можно смело допиливать под ваши нужды. Код компонента будет тут:
./bitrix/components/citfact/form/
или
./local/components/citfact/form/

Если по каким то соображениям вы не хотите изменять код компонента, можно написать ваш код в обработчике события OnBeforeEventAdd. По ссылке есть пример как подключать свой обработчик. Суть в том, что компонент citrus.form, судя по параметрам, делает отправку письма на почту.
В параметре EVENT_NAME указано почтовое событие FEEDBACK_FORM. Отлавливайте в обработчике события OnBeforeEventAdd, данное почтовое событие, и выполняйте свой код.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Искать формы бесполезно, следы уведут вглубь компонентов, куда ТП Битрикса не советует соваться, потому что при обновлении все ваши правки пойдут лесом.
Есть Истинно Перанальный Путь Битрикса - добавить обработчик в /bitrix/php_interface/init.php:
function yourHandler($WEB_FORM_ID, $RESULT_ID)
{
  if ($WEB_FORM_ID == YOUR_NUMBER) // номер той формы, которую вы хотите поймать
  {
	  $fields = array();
	  $arAnswers = CFormResult::GetDataByID($RESULT_ID, $fields); 
          // отправленные в форме данные в $arAnswers, можно что-то с ними сделать
  }
}
AddEventHandler('form', 'onAfterResultAdd', 'yourHandler');
AddEventHandler('form', 'onAfterResultUpdate', 'yourHandler');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы