AjaxForm + FormIt и отдача файла
Всем привет!
Возникла задача:
«После заполнения полей и прохождения валидации, стартует скачка файла.»
логично, что нужно использовать хуки FormIt (download_hook)
хук:
при вызове хука как отдельный сниппет на странице, скачка начинается.
Вызов как хука FormIt — не работает.
Консоль браузера пуста.
на почту письма не приходят.
Скорее всего дело в заголовка header();
Кто нибудь делал подобное? или подскажите как лучше, что да как?
Возникла задача:
«После заполнения полей и прохождения валидации, стартует скачка файла.»
логично, что нужно использовать хуки FormIt (download_hook)
[[!AjaxForm?
&snippet=`FormIt`
&form=`down_price.tpl`
&emailTpl=`zvonok.sent`
&hooks=`spam,email,download_hook`
&emailSubject=`Скачали прайс-лист`
&emailTo=`[[++emailsender]]`
&validate=`phone:required`
&validationErrorMessage=`В форме содержатся ошибки!`
&successMessage=`Сообщение отправлено!`
]]
хук:
$file = 'file.zip';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
return true;
}
при вызове хука как отдельный сниппет на странице, скачка начинается.
Вызов как хука FormIt — не работает.
Консоль браузера пуста.
на почту письма не приходят.
Скорее всего дело в заголовка header();
Кто нибудь делал подобное? или подскажите как лучше, что да как?
Комментарии: 4
Раз вы реализуете данную задачу через ajax, имхо, лучше и загрузчик вынести в скрипты:
Хук, соответственно, не нужен.
$(document).on('af_complete', function(event, response) {
if (response.form.attr('id') == 'айди_формы' && response.success == true) {
$.fileDownload('путь_до_файла').done(function () { alert('Файл успешно загружен!'); });
}
});
Хук, соответственно, не нужен.
Блин! отличная идея Максим!
чет забыл про af_complete совсем
чет забыл про af_complete совсем
скачал
fileDownload
в коде пришлось поправку сделать
fileDownload
в коде пришлось поправку сделать
response.form[0].class = "download_price"
через атрибут — не реагировалresponse.form.attr('class ') == 'download_price'
все заработало, спасибо за идею!
Не за что.)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.