AjaxForm + FormIt + самописный сниппет всегда возвращает success: true, с чем это может быть связано?
Пытаюсь понять, почему у меня форма всегда возвращает «Успешно», хотя на самом деле это не так. Пробую, упростив до максимума сделать так:
Чанк form1
Чанк form1.form:
Спасибо, буду рад идеям.
Чанк 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 тупо «не видит» этот сниппет.Спасибо, буду рад идеям.
Комментарии: 11
Попробуйте так
<?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;
Попробовал. Без изменений: в логах ничего, в FormIt пишется поле. Куда девается сниппет — неясно.
<?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;
проверил, дает данные
Ок, тогда как искать проблему? Я пробовал сменить шаблон на дефолтный — проблема осталась.
вы попробуйте код который я вам дал, должны данные появится
Скопировал и вставил. Выполнил. Журнал ошибок чист как слеза младенца. :(
[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
вот спокойно передается в хук и выводится в лог
У кого как, у меня тишина. :( Может быть я попрошу вас посмотреть самому? Есть телеграмм или другое что?
whatsapp +79195151313
Нет вотсаппа. Что-то другое? Viber, Skype, etc?
telegram https://t.me/Stanislav_Danilov
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.