Вывод чекбоксов для соглашения с документами на обработку данных в формах шаблона

Базовый способ вывода

Чтобы вывести чекбоксы в форме используйте метод MG::addAgreementCheckbox(""). (Первый параметр обязателен, передайте пустую строку.)


<form>
 <input name="name"> 
  <?php echo MG::addAgreementCheckbox(""); ?>
 <button type="submit">Отправить</button> 
</form>
  

Вывод с помощью JavaScript

Если ваша форма выводится с помошью JS, используйте переменную: window.agreementHtml.


const html = `
 <form> 
  <input name="name"> 
  ${window.agreementHtml}
  <button type="submit">Отправить</button> 
 </form>
`

Чтобы в переменную сохранилась верстка чекбокса нужно вызвать метод MG::addAgreementCheckbox("", "", "addJSVariable") (Передайте в третий параметр "addJSVariable").

Если форма выводится плагином, добавьте вызов в обработчик шорткода. Если в компоненте или на странице добавьте в php файл этого компонента/страницы.


// Купить в 1 клик, index.php 
static function buyOneClick($product)
{
  /*
  Код обработчика шорткода плагина
  */
   MG::addAgreementCheckbox("", "", "addJSVariable");
}
  

<?php 
// Пример компонента с формой которая отрисовывается на JS /components/form/form.php

MG::addAgreementCheckbox("", "", "addJSVariable"); 
mgAddMeta('components/form/form.js');
?>
<div class="form-wrapper" >
</div>


  

// Пример компонента с формой которая отрисовывается на JS /components/form/form.js

const html = `
 <form> 
  <input name="name"> 
  ${window.agreementHtml}
  <button type="submit">Отправить</button> 
 </form>
`
document.querySelector('.form-wrapper').innerHTML = html;

Валидация формы

Валидация на сервере происходит с помощью метода Models_Privacy::validateForm($form, $source, $save = false, $forceUserId = null).



// Пример валидации чекбоксов в плагине обратный звонок
// $form - Данные формы
// $sourse - Идетификатор источника формы
// $save - Флаг сохранения согласия пользователя
// $forceUserId - Идентификатор пользователя, если согласие нужно привязать к пользователю отличному от тому, который авторизован в данный момент

if (class_exists('Models_Privacy')) {
            $formData = $_POST;
            unset($formData['pluginHandler']);
            unset($formData['add_datetime']);

            $agreementValidationResult = Models_Privacy::validateForm($formData, 'backRing', true);
            if ($agreementValidationResult !== true) {
                $error = 'Не удалось проверить согласие на юридические документы';
                if (!empty($agreementValidationResult['errors'])) {
                    $error = $agreementValidationResult['errors'][0];
                }
                $error = '<span class="error"gt;'.$error.'</spangt;';
                $this->data['msg'] = $error;
                return false;
            }

            foreach (array_keys($_POST) as $postField) {
                if (mb_strpos($postField, 'privacyDocument-') === 0) {
                    unset($_POST[$postField]);
                }
            }
        }