Всего 123 794 комментария

Артур Шевченко
21 марта 2023, 15:19
+1
Отсутствие API
Какой API нужен компоненту для отправки форм ajax'ом?

Нехватка событий (есть одно afl_complete) что не позволяет решать разные задачи
Какие задачи связанные с отправкой формы нельзя решить используя AjaxFormitLogin?

Повторение недостатка AjaxForm (AjaxForm тянул зависимость ввиде jgrowl, а AjaxFormitLogin теперь тянет iziToast)
AjaxForm тянул jQuery и jGrowl, AjaxFormitLogin тянет IziToast только для того, чтобы из коробки были уведомления. В документации написано как отключить их и заменить.

Самое главное, AjaxFormitLogin заменил громоздкий jquery-form на XMLHttpRequest — это нонсенс
Fetch API не позволяет отслеживать процесс загрузки файлов, а мне это нужно.
Артур Шевченко
21 марта 2023, 15:11
0
В AjaxFormitLogin нет jGrowl, там IziToast. Можно заглянуть к нему в документацию и настроить как хочется, или расширить класс уведомлений и написать свои.
Баха Волков
21 марта 2023, 13:21
+1
Я так понял эти компоненты идентичны
Проблем у AjaxFormitLogin множество.

  • Отсутствие API
  • Нехватка событий (есть одно afl_complete) что не позволяет решать разные задачи
  • Повторение недостатка AjaxForm (AjaxForm тянул зависимость ввиде jgrowl, а AjaxFormitLogin теперь тянет iziToast)
  • Самое главное, AjaxFormitLogin заменил громоздкий jquery-form на XMLHttpRequest — это нонсенс
Баха Волков
21 марта 2023, 13:10
+1
так что вопрос — а можно показывать сообщение об успешной отправке в самой форме?
Да, легче легкого. Например, в чанке формы указываете какой-то элемент:

<form id="form-1">
    <!-- какая-то разметка -->
    <div class="successMessage"></div>
    <!-- какая-то разметка -->
<form>

document.addEventListener('fetchit:success', (e) => {
  const { form } = e.detail;

  if (form.getAttribute('id') === 'form-1') {
    const successMessage = form.querySelector('.successMessage');
    successMessage.innerHTML = 'Форма отправлена';

    // И вообще, делаете что хотите
  }
});

Именно поэтому я реализовал JS API (документация) таким образом, чтобы можно было реализовать разные сценарии.

Кстати, в версии альфа такая возможность была в коробке, но я выпилил в пользу API, но если люди захотят, то могу вернуть эту возможность.
Сергей
21 марта 2023, 12:57
0
Добрый день!
Проблему я все-же нашел, она связанна с дополнением AdminPanel (если смотреть сайт в инкогнито, то таких проблем нет)
deleted
21 марта 2023, 12:00
0
@Артур Шевченко а в чём смысл AjaxFormitLogin сейчас? Я так понял эти компоненты идентичны. Ни разу не использовал AjaxForm, так что вопрос — а можно показывать сообщение об успешной отправке в самой форме? Отправляешь форму и как будто ничего не происходит, jgrowl довольно сложно заметить на экране (да, jgrowl можно заменить, но всё же)
Артур Шевченко
21 марта 2023, 11:55
0
Написать плагин на событие msOnAddToCart
Антон
21 марта 2023, 11:49
0
Разобрался…
oneBooking подключает еще и свою библиотеку jquery.min.js
Отключил, все заработало
Антон
21 марта 2023, 11:19
0
Все же дело AjaxForm…

Убрал карусель, но фатальная ошибка все равно выскакивает…
Это происходит только на странице с модулем oneBooking

Плиз хелп ми бразерс
Николай Савин
21 марта 2023, 11:08
0
Первое Это не ошибка, а предупреждение. И оно не прекратилась — вы просто отключили уведомления.
Chavdarov
21 марта 2023, 11:04
0
Я благодарю вас от всего сердца!
эта ошибка прекратилась
(ERROR @ /core/cache/includes/elements/modx/revolution/modplugin/1.include.cache.php : 38) PHP warning: Undefined array key "q"
НО
эта ошибка постоянно выскакивает
ERROR @ /var/www/amtis/web/core/src/Revolution/modX.php : 2584) Could not prepare context: mgr
vectorserver
21 марта 2023, 08:10
+1
После <?php пропиши, error_reporting(0);, а по хорошему в php8 нужно указывать типизацию!

<?php
error_reporting(0);
if ($modx->context->get('key') !== 'mgr') {
///code
}
Антон
20 марта 2023, 23:01
0
Да, посмотрел консоль… форма тут не при чем… на карусель ругается:

Uncaught TypeError: $(...).owlCarousel is not a function
at HTMLDocument.(my.js:35:20)
at fire (jquery.js:1075:30)
at Object.fireWith (jquery.js:1193:7)
at Function.ready (jquery.js:435:14)
at HTMLDocument.DOMContentLoaded (jquery.js:949:10)

Пока не могу понять, что не нравится((
Артур Шевченко
20 марта 2023, 22:59
+1
Ну вообще AjaxForm сам подгружает все скрипты, возможно у вас она некорректно установилась. А так, рекомендую переходить на более современные решения. Например AjaxFormitLogin, где jQuery выпилена за ненадобностью и есть много полезных фишек из коробки.
Баха Волков
20 марта 2023, 21:28
0
На данный момент есть баг связанный с вызовом сниппета на fenom, завтра выпущу патч с исправлением.
Баха Волков
20 марта 2023, 21:27
0
На данный момент есть баг связанный с вызовом сниппета на fenom, завтра выпущу патч с исправлением.
Баха Волков
20 марта 2023, 21:27
0
День добрый!

1. У компонента нет и не может быть никаких конфликтов с jquery. Даже по stacktrace в вашем скрине видно, что ошибка не связана с fetchit. В вашем конкретном случае надо разбираться, уверен, выясниться что ошибка где-то в вашем коде.

2. Поведение ожидаемое, в данной заметке показан пример дополнительной валидации на стороне клиента, это значит, что и за поведение также разработчик отвечает. В вашем случае, если вы хотите показывать всплывающее уведомление, то нужно добавить:

fetchit.setError('phone', 'Введите пожалуйста корректный номер телефона');
FetchIt.Message.error('Введите пожалуйста корректный номер телефона');  // <-- ЭТУ СТРОКУ
e.preventDefault();

3. Не соглашусь, библиотека intl-tel-input как раз даёт возможность вводить номера телефонов в любом формате, а маска прямо противоречит этому. Вы можете использовать любое готовое решение или своё, а FetchIt без разницы что вы там сделаете, он просто собирает все данные с полей ввода формы и вскармливает их указанному сниппету.

На сколько я понимаю для данного компонента не нужен jquery, но все же с ним у него конфликт.
У FetchIt нет и не может быть конфликтов с jquery.

В вообще было бы здорово, если бы компонент прятал саму форму из html так-как роботы зачастую уже надоели и все защиты обходят. (Наверное это больше вопрос к fiormit)
Я подумаю как-нибудь о защите от спама, может что-то интересное и надумаю.

Еще раз спасибо за ваш труд!
Пожалуйста!
Сергей
20 марта 2023, 16:19
+1
Добрый день!
Решил протестировать данный компонент, но столкнулся со следующими проблемами.
1. Пробовал разные версии jquery но постоянно одна и та-же ошибка при отправки Скрин
2. Дополнительно подключили Notyf и на имени всплывающее уведомление работает, а на телефоне, если подключить все скрипты не работает. (видимо надо править код валидатора в этом примере)
3. В данном решении конечно не хватает маски для телефона.

На сколько я понимаю для данного компонента не нужен jquery, но все же с ним у него конфликт.
В вообще было бы здорово, если бы компонент прятал саму форму из html так-как роботы зачастую уже надоели и все защиты обходят. (Наверное это больше вопрос к fiormit)

Сама отправка формы, работает.

Еще раз спасибо за ваш труд!
Евгений
20 марта 2023, 15:15
0
Добрый день, компонент в корзине работает, но что делать если корзина вызывается с любой страницы по ajax в модальное окно бутсрапа, в такм случае скрипты не отрабатывают. подскажите как сделать по фэншую, чтобы скрипты отрабатывали.
Вячеслав
20 марта 2023, 13:12
0
Подскажите. В Родительский ресурс контейнер — подгружаются около 20 ресурсов — а нужные не подгружаются, поиск тоже не работает. Сохранить задание соответственно не получается.
file.modx.pro/files/e/4/9/e4945ce95acb1f355845fde2ab8eed8a.png