Всего 123 801 комментарий

exist17
21 марта 2023, 22:04
0
Вопрос. Компонент использует сессии для хранения параметров так же как AjaxForm или этот момент решен как то иначе?
Артур Шевченко
21 марта 2023, 20:05
+1
Добавлять авторизацию и регистрацию — это не «такое себе»
Не такое себе, я этим пользуюсь, мне удобно когда это есть.

Т.е. для простой задачи добавить и/или изменить значение в форму перед её отправкой, нужно манипулировать с DOM или расширить класс?
Я согласен, что это не самое удобное решение, но вынужден повторить — в моей практике нечасто встречаются кейсы требующие манипулировать значениями перед отправкой, поэтому я и не добавил дополнительных событий.

Именно с этим лозунгом ты сменил jquery-form на XMLHttpRequest
Нет, лозунг был другой: одна отключаемая зависимость лучше двух обязательных.

Ты проигнорировал вопрос про асинхронность в XMLHttpRequest
Потому что счёл его риторическим, логично же что никаких работ по усовершенствованию не ведётся, разработан новый API и его развивают.

А когда в XMLHttpRequest появится (спойлер — не появится, но есть библиотеки-обёртки над ним в которых реализована асинхронность) ты обратно перепишешь с Fetch API на XMLHttpRequest?
Ты меня за идиота принимаешь? Я решаю возникающие у меня задачи, удобным для меня способом. Мне нужно показывать процесс загрузки, Fetch API этого не умеет, я использовал XMLHttpRequest. По-моему всё логично.

Мне кажется ты упускаешь суть: ты писал компонент с целью внедрения Fetch API, я писал компонент с целью повысить удобство собственной работы и отказаться от использования jQuery. Не вижу причин по которым я обязан был использовать Fetch вместо XMLHttpRequest. Для пользователя компонента это вообще не важно, что там под капотом, главное это стабильное выполнение необходимых ему функций.

И наконец, всё что ты перечислил в качестве проблем AjaxFormitLogin, всего лишь твоё скромное мнение, о чем ты забыл упомянуть, отчего кому-то может показаться, что перечисленные тобой «проблемы» действительно серьезно могу усложнить жизнь пользователю моего компонента. Я думаю тот, кому понадобится больше событий и API, легко поймёт, что всё это есть в FetchIt, и выберет именно его.
Баха Волков
21 марта 2023, 19:30
+1
Кстати, тут меня в комментариях @Лёша спросил про возможность показа сообщения в самой форме и я показал как это можно реализовать, но дело в том, что такая возможность была в альфа версии компонента, но я потом убрал такой функционал из коробки. Если проявите интерес, то я могу вернуть его.
Баха Волков
21 марта 2023, 19:17
+2
просто потому что я не могу придумать для чего это может понадобиться лично мне. А добавлять что-то, чтобы было такое себе.
Ну Артур, ну какой ты молодец. Добавлять авторизацию и регистрацию — это не «такое себе», просто я не понял и это вообще другое.

Хорошо, ты не смог придумать, а я представь — смог. Тык, тык и тык.

Грубо говоря да, но при желании всегда можно расширить класс.
Прости, но мне придётся поязвить — ты же обязательно покажешь как расширить класс? Т.е. для простой задачи добавить и/или изменить значение в форму перед её отправкой, нужно манипулировать с DOM или расширить класс? Прикольно.

Нет смысла обновлять то, что и так работает.
Я уже понял. Именно с этим лозунгом ты сменил jquery-form на XMLHttpRequest

Когда такая возможность появится — перепишу.
Ты проигнорировал вопрос про асинхронность в XMLHttpRequest, но это приводит к более веселой ситуации: А когда в XMLHttpRequest появится (спойлер — не появится, но есть библиотеки-обёртки над ним в которых реализована асинхронность) ты обратно перепишешь с Fetch API на XMLHttpRequest?
Артур Шевченко
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)

Пока не могу понять, что не нравится((