PHP (Zend) & Smarty - проблемы с генерацией файлов .doc и заголовков http - PullRequest
0 голосов
/ 27 июля 2011

Я использую Zend Framework и генератор шаблонов Smarty в проекте, я новичок в этой работе, а также в ZF и Smarty. Во всяком случае, на действии есть интерактивная ссылка для создания отчета .doc. После нажатия он генерирует файл .doc, используя класс HtmlToDoc следующим способом:

$htmltodoc_instance -> createDoc($body ,
                  'filename.doc',
                   TRUE);  
/* the last parameter TRUE means: download or save the file. it set the HTTP headers 
'Content-type: application/octet-stream' and 'Content-Disposition: attachment; 
 filename="..."', forcing the browser to open a download dialog for filename.doc

до этого текущее действие было обработано

 $this -> view -> obj_to_render = $obj_to_render.

с obj_to_render, помещенным в представление, в то время как $ obj_to_render - это, как правило, отформатированный html-код движка шаблонов Smarty. Я не знаю, является ли это причиной, но кажется, что это является причиной проблемы: заголовок диалогового окна загрузки .doc каким-то образом переопределяется следующим заголовком рендеринга представления, и поэтому вывод файла .doc не является успешным , Я пытался поставить exit () после вызова метода createDoc (), но это очень помогает. вывод отличается, но он по-прежнему не отображает информацию, которая мне нужна. Кто-нибудь знает, как разделить эти две операции и затем получить правильный выходной файл? Спасибо!

1 Ответ

0 голосов
/ 28 июля 2011
public function h2dAction()
{
    $content = '<strong>wow! it\'s alive!</strong>';

    $htmltodoc = new HTML_TO_DOC();
    $htmltodoc->docFile = 'wow.doc';
    @$htmltodoc->createDoc($content, $htmltodoc->docFile, true);
    die;
}

GDocs отлично работает с этим файлом.не могу проверить на MS Word, у меня нет его:)

...