Битрикс – Как исправить в веб-форме “Согласитесь с условиями”

Что делать, если при добавлении результата в веб-форму при помощи 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 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *