
Артем
С нами с 15 октября 2017; Место в рейтинге пользователей: #1557 часов назад
самый просто вариант это хукЯ тоже так думаю
Этот хук обрабатывает форму "Купить в 1 клик", создает заказ в miniShop2 1
04 сентября 2025, 12:45
Нет, данную проблему не решил, потому как она мне и не мешала… Так как с сам minishop3 использовал на паре проектов где доставка и не требовалась. Буд...
[MiniShop3] - Новости, Планы 34
04 сентября 2025, 12:35
казалось бы чего, открой другой браузер, где не выполнен вход и заноси заказаМожно установить adminTools и запретить автоматическое залогинивание в ко...
Оформление заказа minishop2 1
04 сентября 2025, 12:27
modx.pro/help/12408#comment-81924
minishop2 отправить фотографию товара заказчику 11
03 сентября 2025, 19:36
Если ты просто скачал компонент из репозитория и не запускал composer install — запусти.
MiniShop3 - 1.0.0-alpha 20
31 августа 2025, 21:09
Экранировать, то есть так: $c->sortby($this->modx->escape('rank'), 'ASC');
Во всех файлах?
/core/components/pageblocks/processors/mgr/co...
PageBlocks. Удобное управление контентом сайта. 46
29 августа 2025, 18:05
Василий, здравствуйте! Очень интересное (и правильное) направление для развития modx экосистемы как мне кажется. В последнее время для разработки боль...
Новый тип дополнений: mmxDatabase и mmxForms 41
29 августа 2025, 17:29
Пересобрал шаблон для новостей которые через Collections.
В какой TV была ошибка так и не нашел (((
Мodx revo 3.1.2 при запросе страницы, связанной с Collections сервер возвращает ошибку 500 3
28 августа 2025, 21:34
Добро. Сейчас, сейчас… прольётся чья-то кровь )))
Доработки сайта сообщества modx.pro 11
Btw, Quiz is a paid component. That means you have a one year tech support provided by author of this component. Please, sign in to your Modstore account and use Support tab to directly contact the author.
— ловишь нажатие кнопки, отправляешь ajax запрос на сервер с каким-нибудь экшном типа modal/show
— на сервере проверяешь, что это ajax запрос и сравниваешь экшн, если это modal/show, то рендеришь свой чанк с модалкой через pdoTools::getChunk() или modX::getChunk(), а затем возвращаешь ответ на фронт
— на фронте достаешь из ответа html и вставляешь на страницу через append/innerHTML.
Подробнее можно почитать тут и тут.
вместо
пишешь
На выходе получаешь точное количество лет опыта.
Т.е. у каждого преподавателя должна быть дата, от которой нужно отсчитывать стаж, а затем нужно банально вычесть эту дату из текущей, округлив до лет.
Подсчитывать такие вещи через крон на сервере — лишняя головная боль.
P.S. Закинул небольшую спасибку
Спасибо за еще одну отличную заметку!
Конечно, было бы интересно почитать про JWT авторизацию, поскольку она кажется в разы более гибкой и интересной, нежели сессии и вот это все, особенно в контексте полного разделения фронтенда от бэкенда.
ну и потом на крон его повесить, разумеется
Практически всю нужную тебе инфу можно смотреть в рамках этого сайта. Просто пишешь прямо там в поиске нужный метод или фразу, а потом смотришь результаты.
Он поднимается вверх по DOM и ищет указанного родителя.
У тебя может быть хоть 150 одинаковых форм, но измененный инпут принадлежит только одной из них.
Поэтому ты делаешь, например, вот так
и узнаешь, что измененный инпут принадлежит форме с классом formClass.
Более того, ты можешь сразу сохранить эту форму в переменную и в дальнейшем работать с ней, если есть такая необходимость.
Верно, он будет следить за всеми элементами всех форм, в этом и есть его плюс, который называется делегирование.
Например, если у тебя на странице появятся еще 2 формы с таким же классом, то они автоматически подхватятся и в них тоже будут отслеживаться изменения.
И нет, не нужно задавать всем инпутам определенный класс.
Твоя задача
решается вот так
Это будет точно так же срабатывать, если изменения происходят только в рамках конкретной формы.
Твоя форма может быть присвоена переменной, как я уже показал выше, чтобы ты мог с ней работать и собирать из нее данные через FormData, например.
К слову, getElementById('formtest') уже практически не используется в новом коде, поэтому рекомендую заменять его на querySelector('#formtest').
Если тебе нужно отслеживать изменения внутри какой-то конкретной формы, то просто проверяешь ее наличие среди родителей через closest.
Данные из формы удобнее всего собирать через FormData, как уже выше сказали. Иногда может потребоваться дополнительная обработка всяких чекбоксов, потому что по умолчанию неотмеченные чекбоксы вообще не собираются, например.
К слову, FormData — итерируемый объект, поэтому ты можешь легко по нему пройтись через цикл и поменять то, что тебе нужно:
fetch лично мне не зашел, слишком много телодвижений требуется для обычных ajax-запросов. Чтобы принять json на сервере, нужно лезть в php://input и оттуда его доставать, что может быть не всегда удобно по разным причинам. Тут либо написать свой простенький асинхронный метод-обертку для запросов, который будет построен на старом XMLHttpRequest, либо посылать данные в multipart/form-data, тогда проблем не будет.
Помимо этого, fetch до сих пор не умеет отслеживать прогресс загрузки, поэтому если нужна такая фича, можно смело от него отказываться.
1. Убрать оплату из заказа и вернуть json_response в конфиг, тогда exit не будет вызываться, а в ответе будет номер заказа.
2. Брать номер заказа из сессии — он добавляется туда сразу после создания заказа.