axle0vega
@axle0vega
Frontend

Как исправить хук для FormIt?

Есть задача, чтобы при отправке заполненной формы скачивался файл, а затем пользователя перенаправляло на другую страницу. Файл загружается через 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;) — то редирект срабатывает, а файл не качается.
Подскажите, как сделать чтобы оба действия срабатывали?
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 1
redirect уберите и попробуйте перед exit поставить header с редиректом вручную
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы