Не работает Quiz опросник.
Добрый день.
Не работает Quiz. Пакет установлен, все настроено.
Вывод опросника такой
Сниппет:
Чанк:
Не работает Quiz. Пакет установлен, все настроено.
Вывод опросника такой
[[!Quiz? &id=`9` &form=`tpl.Quiz.form.oprosnik` &tplCover=`tpl.Quiz.cover.oprosnik`]]
Но на сайте, когда нажимаю Заполнить заявку, то кнопка не работает.Сниппет:
<?php
/** @var modX $modx */
/** @var array $scriptProperties */
/** @var Quiz $Quiz */
$Quiz = $modx->getService('Quiz', 'Quiz', MODX_CORE_PATH . 'components/quiz/model/', $scriptProperties);
if (!$Quiz) {
return 'Could not load Quiz class!';
}
if (!$modx->getService('AjaxForm', 'AjaxForm', MODX_CORE_PATH . 'components/ajaxform/model/ajaxform/', $scriptProperties)) {
return 'Could not load AjaxForm class!';
}
// PDOTOOLS
$pdo = $modx->getService('pdoTools');
// Проверяем есть ли квиз
$id = $modx->getOption('id', $scriptProperties, $input);
if(empty($id)) return 'Не указан id квиза';
if(!$form = $modx->getObject('QuizForm', $id)) return 'Квиз с id: ' . $id . ' не найден';
// $scriptProperties
$subject = $modx->getOption('subject', $scriptProperties, $form->get('subject') ?: $modx->lexicon('quiz_form_subject_def'), true);
$emailTo = $modx->getOption('emailTo', $scriptProperties, $form->get('emails'), true);
$emailBCC = $modx->getOption('emailBCC', $scriptProperties, $form->get('emailBCC'), true);
$successMessage = $modx->getOption('successMessage', $scriptProperties, $form->get('success') ?: $modx->lexicon('quiz_form_success_def'), true);
$errorMessage = $modx->getOption('validationErrorMessage', $scriptProperties, $form->get('error') ?: $modx->lexicon('quiz_form_error_def'), true);
$hooks = $modx->getOption('hooks', $scriptProperties, '', true);
$email_admin = $modx->getOption('emailTpl', $scriptProperties, $form->get('chunk_email_admin') ?: 'tpl.Quiz.email', true);
$email_user = $modx->getOption('fiarTpl', $scriptProperties, $form->get('chunk_email_user') ?: 'tpl.Quiz.email', true);
// TPL
$tplForm = $modx->getOption('form', $scriptProperties, 'tpl.Quiz.form', true);
$tplCover = $modx->getOption('tplCover', $scriptProperties, 'tpl.Quiz.cover', true);
$tplCounter = $modx->getOption('tplCounter', $scriptProperties, 'tpl.Quiz.counter', true);
$tplProgress = $modx->getOption('tplProgess', $scriptProperties, 'tpl.Quiz.progress', true);
$tplStep = $modx->getOption('tplStep', $scriptProperties, 'tpl.Quiz.step', true);
$tplStepNav = $modx->getOption('tplStepNav', $scriptProperties, 'tpl.Quiz.stepNav', true);
$tplSubmit = $modx->getOption('tplSubmit', $scriptProperties, 'tpl.Quiz.submit', true);
$tplResult = $modx->getOption('tplResult', $scriptProperties, 'tpl.Quiz.result', true);
// TPL field
$tplFieldWrapper = $modx->getOption('tplFieldWrapper', $scriptProperties, 'tpl.Quiz.fieldWrapper', true);
$tplField = $modx->getOption('tplField', $scriptProperties, 'tpl.Quiz.field', true);
$tplFile = $modx->getOption('tplFile', $scriptProperties, 'tpl.Quiz.field_file', true);
$tplRadio = $modx->getOption('tplRadio', $scriptProperties, 'tpl.Quiz.field_radio', true);
$tplCheckbox = $modx->getOption('tplCheckbox', $scriptProperties, 'tpl.Quiz.field_radio', true);
$tplHidden = $modx->getOption('tplHidden', $scriptProperties, 'tpl.Quiz.field_hidden', true);
$tplTextarea = $modx->getOption('tplTextarea', $scriptProperties, 'tpl.Quiz.field_textarea', true);
$tplSelect = $modx->getOption('tplSelect', $scriptProperties, 'tpl.Quiz.field_select', true);
$ajaxform_frontend_css = $modx->getOption('ajaxform_frontend_css', $scriptProperties, '/assets/components/ajaxform/css/default.css', false);
$ajaxform_frontend_js = $modx->getOption('ajaxform_frontend_js', $scriptProperties, '/assets/components/ajaxform/js/default.js', false);
$emailsender = $modx->getOption('emailsender');
$site_name = $modx->getOption('site_name');
$site_url = $modx->getOption('site_url');
// Classes
$classSubmit = $modx->getOption('classSubmit', $scriptProperties, 'btn-lg btn-primary', true);
$formSelector = $Quiz->getFormSelector($id);
$validate = ['workemail' => 'workemail:blank', 'nospam' => 'nospam:blank'];
// Загрузка стилей и скриптов
$Quiz->loadJsCss($id);
// Записываем параметры в сессию
$_SESSION['Quiz'] = $scriptProperties;
// Получаем хуки
$hooks = $Quiz->getHooks($form, $hooks);
// Параметры для хука FormItSaveForm и QuizSave
$formFields = array();
$fieldNames = array();
if($steps = $Quiz->getSteps($id)) {
foreach($steps as $step) {
if($fields = $Quiz->getFields($id, array('step_id' => $step['id']))) {
foreach($fields as $field) {
$value = explode('||', $field['value']);
// if(count($value) > 1 && $field['type'] == 'checkbox') {
// $field['name'] .= '[]';
// }
$formFields[] = $field['name'];
$fieldNames[] = "{$field['name']}=={$field['fieldname']}";
// Добавляем валидацию
if($field['required'] && !isset($validate[$field['name']]) ) {
if($field['type'] == 'Email' ) {
$validate[$field['name']] = $field['name'] . ":email:required";
} else {
$validate[$field['name']] = $field['name'] . ":required";
}
}
}
}
}
}
// Обложка квиза
$cover = '';
// Раздел
$step = '';
if($form->get('cover_active')) {
$cover = $pdo->parseChunk($tplCover, array(
'img' => $form->get('img'),
'title' => $form->get('title'),
'description' => $form->get('description'),
'btn_start' => $form->get('btn_start') ?: $modx->lexicon('quiz_form_btn_start_def'),
'content' => $form->get('content'),
'formSelector' => $formSelector,
));
} else {
$step = $Quiz->getStepHTML(array('quizform' => $id));
$step = json_decode($step, true);
$step = $step['html'];
}
// Кнопка submit
$submit = $pdo->getChunk($tplSubmit, array(
'formSelector' => $formSelector,
'btn_submit' => $form->get('btn_submit') ?: $modx->lexicon('quiz_form_btn_submit_def'),
'classSubmit' => $classSubmit
));
// Навигация
$nav = $pdo->getChunk($tplStepNav, array(
'btn_prev' => $form->get('btn_prev'),
'btn_next' => $form->get('btn_next') ?: $modx->lexicon('quiz_form_btn_next_def'),
'submit' => $submit,
));
// Счетчик
$counter = $form->get('counter');
if($counter) {
$step_count = $Quiz->getCountSteps($id);
$counter = $pdo->getChunk($tplCounter, array(
'steps_count' => $step_count
));
}
// Прогресс
$progress = $form->get('progress');
if($progress) {
$progress = $pdo->getChunk($tplProgress, array(
'steps_count' => $Quiz->getCountSteps($id)
));
}
$quiz = $form->toArray();
$quiz['steps'] = $Quiz->getSteps($id);
foreach($quiz['steps'] as $idx => $s) {
$quiz['steps'][$idx]['fields'] = $Quiz->getFields($id, array('step_id' => $s['id']));
}
// Свойства для сниппета AjaxForm
$prop = array_merge(array(
'snippet' => 'FormIt',
'formName' => $form->get('name'),
// 'frontend_css' => '',
// 'frontend_js' => '',
// Form
'formSelector' => $formSelector,
'form' => $tplForm,
'emailTpl' => $email_admin,
'hooks' => implode(',', $hooks),
// Email
'emailTo' => $emailTo,
'emailFrom' => $emailsender,
'emailFromName' => $site_name,
'emailSubject' => $subject,
// Email BCC
'emailBCC' => $emailBCC,
'emailBCCName' => $site_name,
// Message
'successMessage' => $successMessage,
'validationErrorMessage' => $errorMessage,
// Validate
// 'validate' => implode(',', $validate),
// FormItSaveForm
'formFields' => implode(',', $formFields),
'fieldNames' => implode(',', $fieldNames),
// FormItAutoResponder
'fiarToField' => 'email',
'fiarTpl' => $email_user,
'fiarSubject' => $subject,
'fiarFrom' => $emailsender,
'fiarFromName' => $site_name,
'fiarReplyTo' => $emailsender,
// Обложка квиза
'cover' => $cover,
// Раздел
'step' => $step,
// Скрытые поля
'hidden' => $Quiz->getFieldsHTML(false, $id, array('type' => 'hidden')),
// Навигация
'nav' => $nav,
// Кнопка submit
// 'submit' => $submit,
// Cчетчик
'counter' => $counter,
// Прогресс
'progress' => $progress,
// Сопроводительное письмо
'cover_letter' => $form->get('cover_letter'),
// Прикрепленный файл
'file' => $form->get('file'),
// Контекст
'context_key' => $modx->context->key,
// Пользователь
'user_id' => $modx->user->get('id'),
'user' => $modx->user->get('username'),
// Массив формы
'quiz' => $quiz
), $scriptProperties);
$prop['frontend_css'] = $ajaxform_frontend_css;
$prop['frontend_js'] = $ajaxform_frontend_js;
// Возвращаем сниппет AjaxForm
return $modx->runSnippet('AjaxForm', $prop);
Чанк:
<div class="quiz d-flex flex-wrap" id="quiz-{$id}">
{*Обложка*}
{$cover}
{*Счетчик*}
{$counter}
{*Прогресс-бар*}
{$progress}
{*Форма*}
<form action='{$_modx->resource.uri}' method='post' class='form-column ajax-form quiz-form col-12{if $quiz.cover_active} d-none{/if}' id='{$formSelector}' enctype='multipart/form-data'>
{*Скрытые поля*}
<input type='text' class='sr-only' name='nospam' value=''/>
<input type='email' class='sr-only' name='workemail' value=''/>
<input type='text' class='sr-only' name='quizform' value='{$id}'/>
{$hidden}
{*Прикрепленный файл в письме*}
{if $file}
<input type="hidden" class='sr-only' name="attach_file" value="{$file}" />
{/if}
{*Сопроводительный текст*}
{if $cover_letter}
<input type="hidden" class='sr-only' name="cover_letter" value="{$cover_letter | replace: '"': '\''}" />
{/if}
{*Разделы*}
<div class="steps">{$step}</div>
{*Навигация*}
{$nav}
</form>
</div>
Комментарии: 1
Во-первых, уберите, пожалуйста код под cut (иконка якоря на панели редактирования). Во-вторых, если не работает кнопка, смотрите консоль браузера на предмет ошибок. Если там ошибок нет, смотрите журнал ошибок в админке. Если и там пусто, смотрите лог ошибок сервера. Если и там ничего нет, наймите более квалифицированного специалиста.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.