Как прикрепить к письму файл что был сгенерирован в хуке в ajaxForm/Formit?
В форме нет файла(так же нет в приципе инпута, и указания мультипарта), но в хуке перед отправкой создаётся файл, как его прикрепить к письму?
Комментарии: 9
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Для начала создаем сниппет в админке — это будет наш хук. Примерное содеражание его таково на примере xls:
Тут вам нужно будет указать реальные имена файла в нужных местах и полный путь к файлу в tmp_name. Тут пример с папкой /assets/.
Ну и указать MIME тип присоединяемого файла. (type)
После указываем данный хук в formIT(ajaxForm) и проверяем что все приходит.
У формы на фронте еще должно быть указано enctype=«multipart/form-data» в теге form:
Тестируйте, проверяйте.
Удачи.
Потом так 1
Потом так 2
Но всё равно сообщение не меняется и данные которые отправляю они не поступают на фронт, в доках не нашёл ничего. Данные хочу подставить в хуке, ведь на фронт всё равно приходит ответ, как мне подставит то что нужно мне?
ну и доку посмотрите: docs.modx.com/current/en/extras/formit/formit.hooks
и согласно этому методу, код ниже валиден и должен вернуть данные на фронт ajaxform в триггер af_complete
Сообщение просто для теста стоит.
Если я в хуке верну true или просто любое другое, то ajaxform перестаёт работать, когда делаю через то хотя бы всё работает, по этому я пытаюсь результат засунуть туда.
Как я понял мой код будет работать без проблем если я заменю formit на свой снипет, а что если мне нужен именно всё в таком виде, как мне подбросить эти данные из хука формита в ответ ajaxform
это $AjaxForm->success — оно работает, только если вы запускаете свой сниппет, а не formit.
Поэтому если нужно на почту ссылку отправить — просто добавьте еще поле одно с сылкой.
А если вы хотите показать, то тут сложнее.
1)cacheDataVarName (это имена переменой в кеше из которой возмётся результат)
2)formSelector (это для фронта чтобы отсортировать результат для каждой формы если нужно)
Создал снипет в котором записывается данные в кэш а так же их получения.
Способ вызова для записи:
Сам сниппет:
*********************
Затём в файле core/components/ajaxform/model/ajaxform/ajaxform.class.php
Добавил в конструктор ("__construct") след вещи:
В том же файле, уже в методе "process" записал значение для 2х параметров указаных выше:
***************************************************************
Затем в методе "success" в начало тела добавил следующие
А на фронте в тригере "af_complete" делаю нужные вещи (само сабой разделяю на === true и === false)
и так далее.
Само собой это не лучший вариант, и не совсем продакшен, к тому же это делалось для внутренних целей, не для публики. ПОЖАЛУЙСТА кто может добавьте что лучше сделать для данной задачи, с радостью исправлю и научусь новому.
.
Само собой лучше не трогать исходники, и есть лучшие методы для моей задачи, такое как заменить снипет формит и не пришлось бы городить балаган с исходниками и кэшем, и просто там отправить письма! Позже так и сделаю