Битрикс — Как исправить в веб-форме «Согласитесь с условиями»

Что делать, если при добавлении результата в веб-форму при помощи API выдает ошибку «Согласитесь с условиями»?

Убрать ошибку Согласитесь с условиями в Битриксе

Давайте для начала определим какие могут быть ошибки в АПИ:

CFormResult::Add($FORM_ID, $arValues)

1. Неправильно указан $FORM_ID
2. Перед вызовом метода забыли указать CModule::IncludeModule(«form»);
3. Не все обязательные поля заполнены

Как оказалось, есть и 4ая ошибка 🙂 . Если вы добавите вывод ошибок в форму:

if ($RESULT_ID = CFormResult::Add($FORM_ID, $arValues)) {
	LocalRedirect('/his_own_fashion/success.php');
} else {
	global $strError;
	echo $strError;
}

То можете обнаружить Согласитесь с условиями. В интернете практически нет информации по этому вопросу как и в документации (на данный момент). В одной статье по подписке сделали хороший намек, что нужно добавить еще одно поле. Для веб формы это поле:

$arValues = ['licenses_popup' => 'Y'];

После того как вы указываете в коде ‘licenses_popup’ => ‘Y’ или передали с вашей веб-формы, то ошибка уходит. Изначально мне казалось что это можно как-то убрать через админку, но в настройках модуля и самого Битрикса не нашел ничего похожего по данному вопросу.

Что самое интересное, на более старых версиях редакции 1С-Битрикс Управление сайтом — код работает без ошибок, и данная ошибка возникает только в тех версиях, где CMS начали адаптировать под соответствие законам РФ (привет закон о защите персональных данных).

Надеюсь у вас всё получилось и формы больше не выдают никаких ошибок 🙂

На всякий случай участок кода для наглядности из моей формы:

< ?
if (isset($_POST['form_text_70']) && isset($_POST['form_text_71'])) {

	$arProp = [
		//
		'form_hidden_74' => 'form_text_59',
		//
	];

	$arValues = ['licenses_popup' => 'Y'];
	foreach ($_POST as $key => $value) {
		if ($arProp[$key] && $value) {
			$arValues[$arProp[$key]] = $value;
		}
	}

	$FORM_ID = 12;
	CModule::IncludeModule("form");

	if ($RESULT_ID = CFormResult::Add($FORM_ID, $arValues)) {
		LocalRedirect('/ajax/success.php');
	} else {
		global $strError;
		echo $strError;
	}

}
? >

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Добавить комментарий

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