Всего 123 797 комментариев

Артур Шевченко
21 марта 2023, 18:40
+1
Банально — такой, такой и такой
Думаю это ни к чему в данном компоненте, просто потому что я не могу придумать для чего это может понадобиться лично мне. А добавлять что-то, чтобы было такое себе. Если кто-то предложит PR, волью без проблем.

Добавление и/или изменение значений отправляемых на сервер
Грубо говоря да, но при желании всегда можно расширить класс.

Каждый раз когда зависимость обновиться, нужно будет обновить компонент?
Нет смысла обновлять то, что и так работает.

когда разработчик sweetalert2 захочет выразить свой личный протест в OpenSource проекте, то как быть с этим?
Понятное дело не использовать подключение зависимостей через cdn.

Работа над введением этой возможности ведётся и оно точно появится
Когда такая возможность появится — перепишу.
Баха Волков
21 марта 2023, 18:11
+1
Какой API нужен компоненту для отправки форм ajax'ом?
Банально — такой, такой и такой

Какие задачи связанные с отправкой формы нельзя решить используя AjaxFormitLogin?
Добавление и/или изменение значений отправляемых на сервер, например. Или ты хочешь предложить манипулировать DOM для этого?

AjaxForm тянул jQuery и jGrowl, AjaxFormitLogin тянет IziToast только для того, чтобы из коробки были уведомления. В документации написано как отключить их и заменить.
Ну мне то объяснять уж не стоило. Ответ на вопрос «Почему?» я знаю, тут другой несколько вопрос «Зачем?». Каждый раз когда зависимость обновиться, нужно будет обновить компонент? Ну прикольно. А еще бывают «прикольные приколы», когда разработчик sweetalert2 захочет выразить свой личный протест в OpenSource проекте, то как быть с этим?

Тут важно, не каждая зависимость это плохо, но это тот самый случай, когда легко и безболезненно можно обойтись и без него.

Fetch API не позволяет отслеживать процесс загрузки файлов, а мне это нужно.
Позиция ясна. А это единственная причина? Fetch API пока не позволяет. Но знаешь в чём загвоздка? Работа над введением этой возможности ведётся и оно точно появится, а ведётся ли работа над асинхронностью в XMLHttpRequest?
Артур Шевченко
21 марта 2023, 15:22
+1
а в чём смысл AjaxFormitLogin сейчас
В том, что этот компонент упрощает мне разработку сайтов, там много всякой функциональности, которая нужна почти на каждом сайте. А вообще, читайте документацию, чтобы решить надо оно вам или нет.
Артур Шевченко
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)
Я подумаю как-нибудь о защите от спама, может что-то интересное и надумаю.

Еще раз спасибо за ваш труд!
Пожалуйста!