CodeIgniter : перенаправление после создания PDF-файла

#javascript #php #codeigniter #pdf

#javascript #php #codeigniter #PDF

Вопрос:

я создаю PDF-файл, используя библиотеку TCPDF. Форма пользователя отправляется с использованием ajax, и PDF-файл генерируется в указанную папку.

 $filename= "$name.pdf"; 
$filelocation = $location 

$fileNL = $filelocation."\".$filename;  
$this->pdf->Output($fileNL, 'F');
 

Теперь, на мой взгляд, приведенный выше код получает данные от контроллера, отправленные через ajax, и отвечает за генерацию PDF-файла . PDF генерируется, но я не могу перенаправить страницу после генерации и остаться на той же странице формы.

Я также пробовал перенаправлять JS / Jquery, но не сработало, так как я обнаружил, что заголовки PHP больше не могут быть отправлены, может кто-нибудь посоветовать мне какое-либо решение этой проблемы ,

Мне нужно перенаправить на страницу успеха после генерации PDF

Комментарии:

1. Почему бы вам не сделать это «$this-> pdf-> Output($ fileNL, ‘F’);» в контроллере?

2. код генерации pdf есть в файле просмотра, предоставленном библиотекой TCPDF

3. Поскольку вы сохраняете сгенерированный PDF-файл на сервере, лучшее место для размещения этого кода — в самом контроллере. Это самый простой способ избежать проблемы, с которой вы столкнулись сейчас. После отправки заголовков PHP вы не можете печатать что-либо еще.

4. хорошо, итак, его длинный грязный html-код, который можно увидеть здесь: tcpdf.org/examples/example_003 должен ли я иметь все это в одном контроллере? будет ли это стандартной практикой, и если нет другого sol, я, конечно, не буду возражать против этого

5. Если форма отправляется с использованием AJAX, почему бы не перенаправить пользователя с location = "some/url"; помощью обратного вызова AJAX success? Добавление заголовка перенаправления в ответ на запрос AJAX все равно ничего не даст.

Ответ №1:

Попробуйте добавить статус в функцию вывода:

 $filename= "$name.pdf"; 
$filelocation = $location 
$success_location = '/generated_success.php'; //redirect path after success
$failed_location = '/generated_failed.php';   //redirect path after failed

$fileNL = $filelocation."\".$filename;  
$status = $this->pdf->Output($fileNL, 'F');
if($status==true){
    redirect($success_location);
}else{
    redirect($failed_location);
}