Что делать, если при добавлении результата в веб-форму при помощи 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; } } ? >