Чтобы вывести чекбоксы в форме используйте метод MG::addAgreementCheckbox(""). (Первый параметр обязателен, передайте пустую строку.)
<form>
<input name="name">
<?php echo MG::addAgreementCheckbox(""); ?>
<button type="submit">Отправить</button>
</form>
Если ваша форма выводится с помошью 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]);
}
}
}