AjaxForm + FormIt + самописный сниппет всегда возвращает success: true, с чем это может быть связано?

Пытаюсь понять, почему у меня форма всегда возвращает «Успешно», хотя на самом деле это не так. Пробую, упростив до максимума сделать так:

Чанк form1
[[!AjaxForm?
	&snippet=`FormIt`
	&form=`form1.form` 
	&formName=`Parcel` 
	&hooks=`snippet1,FormItSaveForm` 
	&formFields=`myvar` 
	&fieldNames=`myvar==Test Value` 
	&validate=`myvar:required` 
	&validationErrorMessage=`Please, correct form errors.` 
	&successMessage=`Thank you for sending!`
]]


Чанк form1.form:
<form action="" method="post" class="ajax_form af_example" id="myAjaxForm">

	<div class="form-group">
		<label class="control-label" for="af_myvar">[[%af_label_myvar]]</label>
		<div class="controls">
			<input type="text" id="af_myvar" name="myvar" value="[[+fi.myvar]]" placeholder="" class="form-control"/>
			<span class="error_myvar">[[+fi.error.myvar]]</span>
		</div>
	</div>
	
	<div class="form-group">
		<div class="controls">
			<button type="reset" class="btn btn-default">[[%af_reset]]</button>
			<button type="submit" class="btn btn-primary">[[%af_submit]]</button>
		</div>
	</div>

    [[+fi.success:is=`1`:then=`
    <div class="alert alert-success">[[+fi.successMessage]]</div>
    `]]
    [[+fi.validation_error:is=`1`:then=`
    <div class="alert alert-danger">[[+fi.validation_error_message]]</div>
    `]]
</form>
Ну и сам сниппет snippet1:

<?php
if (empty($_POST['myvar'])) {
		$modx->log(1, "MyVar is empty", 1);
    return $AjaxForm->error('MyVar is empty');
}else{
		$modx->log(1, "MyVar is " . $myvar, 1);
		return $AjaxForm->success('Myvar exists.');
}

$modx->log(1, "Hello!", 1);
return $AjaxForm->error('Ну хоть на что-то сработай, пожалуйста.');

return true;
В итоге, всё это всегда возвращает
{"success":true,"message":"The form is successfully sent.","data":[]}
, при этом в таблицу FormIt $myvar записывается, но ни в логах, ни вообще никаких ошибок не высвечивается. Почему так происходит? Вроде всё делалось строго по примерам. Такое ощущение, что MODX тупо «не видит» этот сниппет.

Спасибо, буду рад идеям.
Евгений
12 февраля 2020, 19:46
modx.pro
807
0

Комментарии: 11

Станислав
12 февраля 2020, 20:10
+1
Попробуйте так
<?php
$values = $hook->getValues();
$myvar = $values['myvar'];
if (empty($myvar)) {
		$modx->log(1, "MyVar is empty", 1);
    return $AjaxForm->error('MyVar is empty');
}else{
		$modx->log(1, "MyVar is " . $myvar, 1);
		return $AjaxForm->success('Myvar exists.');
}

$modx->log(1, "Hello!", 1);
return $AjaxForm->error('Ну хоть на что-то сработай, пожалуйста.');

return true;
    Евгений
    12 февраля 2020, 20:12
    0
    Попробовал. Без изменений: в логах ничего, в FormIt пишется поле. Куда девается сниппет — неясно.
    Станислав
    12 февраля 2020, 20:30
    0
    <?php
    $values = $hook->getValues();
    $myvar = $values['myvar'];
    $modx->log(1, 'Данные '.$myvar);
    if (empty($myvar)) {
    		$modx->log(1, "MyVar is empty");
        return $AjaxForm->error('MyVar is empty');
    }else{
    		$modx->log(1, "MyVar is " . $myvar);
    		return $AjaxForm->success('Myvar exists.');
    }
    
    $modx->log(1, "Hello!");
    return $AjaxForm->error('Ну хоть на что-то сработай, пожалуйста.');
    
    return true;
    проверил, дает данные
      Евгений
      12 февраля 2020, 21:23
      0
      Ок, тогда как искать проблему? Я пробовал сменить шаблон на дефолтный — проблема осталась.
        Станислав
        12 февраля 2020, 21:25
        0
        вы попробуйте код который я вам дал, должны данные появится
          Евгений
          12 февраля 2020, 21:31
          0
          Скопировал и вставил. Выполнил. Журнал ошибок чист как слеза младенца. :(
            Станислав
            12 февраля 2020, 21:36
            0
            [2020-02-12 21:34:46] (ERROR @ /home/s/satalik2/challengesandsolutions.ru/public_html/core/cache/includes/elements/modsnippet/88.include.cache.php : 4) Данные test
            [2020-02-12 21:34:46] (ERROR @ /home/s/satalik2/challengesandsolutions.ru/public_html/core/cache/includes/elements/modsnippet/88.include.cache.php : 9) MyVar is test
            вот спокойно передается в хук и выводится в лог
              Евгений
              12 февраля 2020, 21:44
              0
              У кого как, у меня тишина. :( Может быть я попрошу вас посмотреть самому? Есть телеграмм или другое что?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    11