Есть задача, чтобы при отправке заполненной формы скачивался файл, а затем пользователя перенаправляло на другую страницу. Файл загружается через TV-поле.
Пробую сделать через хук
download:
$kp = $_SERVER['DOCUMENT_ROOT'];
$kp .= $modx->resource->getTVValue('kp');
if (file_exists($kp)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($kp).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($kp));
readfile($kp);
exit;
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, 'Нет такого файла');
}
return true;
FormIt вызываю как обычно:
[[!FormIt?
&hooks=`spam,download,email,redirect`
&emailTpl=`tpl.sendEmail.kp`
&redirectTo=`69`
&validate=`name:required,phone:required,email:required,service`
&submitVar=`get-kp`
&store=`1`
]]
Проблема в том, что файл скачивается, но редирект не срабатывает. Полагаю, это из-за функции
exit, но если её убрать (или поставить вместо неё
return true;) — то редирект срабатывает, а файл не качается.
Подскажите, как сделать чтобы оба действия срабатывали?