Задать вопрос
@svetuk

Как исправить: MODX => AjaxForm + Formit выдает ошибку «Не указан ключ формы (action)»?

Здравствуйте, есть такая проблема(может, кто сталкивался):
[[!AjaxForm?
		        &snippet=`FormIt`
		        &form=`tpl.feedback_re`
		        &validate=`contact_name:required,contact_type:required`
		        &hooks=`email`
                &emailTpl=`feedback_mailtpl`
                &emailSubject=`Сообщение форма4`
                &emailTo=`@gmail.com`
                &emailFrom=`robot@s.ru`
                &submitVar=`form4`
                &validationErrorMessage=`В форме содержатся ошибки!`
                &successMessage=`Сообщение успешно отправлено`
            ]]

tpl.feedback_re
<form method="post" id="form4" action style="position: relative;">
	    <div class="form-head">
        	<div class="validation-errors"></div>
        </div>
	    <div class="form-wrap">
	         <div class="form-group">
	            <input name="contact_name" value="[[+fi.contact_name]]" type="text" class="zak sis55 form-control" pattern="[A-Za-zА-Яа-яЁё\s]{3,}" placeholder="Введите ваше имя" style="background: url(/assets/img/form/user.png) no-repeat 95% 12px;"/> 
	        </div>
	         <div class="form-group">
	            <input name="contact_type" value="[[+fi.contact_type]]" type="text" class="zak sis56 form-control" placeholder="Введите телефон или e-mail" style="background: url(/assets/img/form/phone.png) no-repeat 95% 12px;"/> 
            </div>
                <div id='recaptcha1'></div>
	        <input name="form4" type="submit" value="Отправить заявку" class="zak inp"/>
	    </div>
	    <span class="success"><p>Сообщение успешно отправлено!</p></span>
    </form>


Форма работает, сообщения отправляются , но AjaxForm выдает ошибку:"Не указан ключ формы (action)"
В блоке <div id='recaptcha1'></div> в js подключается рекаптча
P.S.что не помогает:
1 - прописывать в action=[[~[[+id]]]]
2 - менять права на session.save_path
  • Вопрос задан
  • 1423 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 3
enigman90
@enigman90
Веб-разработчик WEB365
А у вас сайт с одним контекстом?
Проверьте через инспектор Chrome есть ли в форме
<input type="hidden" name="action" value="хэш" />
Ответ написан
kysocheg
@kysocheg
Я высокий
Кто нибудь нашел решение данной проблемы?
Ответ написан
Комментировать
@vectorserver22
В assets/components/ajaxform/action.php
Закомментировать с 25 по 27 строку:
elseif (empty($_REQUEST['af_action'])) {
    echo $AjaxForm->error('af_err_action_ns');
}


Готовый код:
<?php
/** @var modX $modx */
define('MODX_API_MODE', true);
require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget('FILE');

// Switch context if need
if (!empty($_REQUEST['pageId'])) {
    if ($resource = $modx->getObject('modResource', (int)$_REQUEST['pageId'])) {
        if ($resource->get('context_key') != 'web') {
            $modx->switchContext($resource->get('context_key'));
        }
        $modx->resource = $resource;
    }
}

/** @var AjaxForm $AjaxForm */
$AjaxForm = $modx->getService('ajaxform', 'AjaxForm', $modx->getOption('ajaxform_core_path', null,
        $modx->getOption('core_path') . 'components/ajaxform/') . 'model/ajaxform/', array());

if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
    $modx->sendRedirect($modx->makeUrl($modx->getOption('site_start'), '', '', 'full'));
} /*elseif (empty($_REQUEST['af_action'])) {
    echo $AjaxForm->error('af_err_action_ns');
}*/ else {
    echo $AjaxForm->process($_REQUEST['af_action'], array_merge($_FILES, $_REQUEST));
}

@session_write_close();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы