как я могу сохранить PdfModel в файл в Zend Framework 2?

Я использую ZF2 и DOMPDFModule\View\Model\PdfModel для создания pdf. Когда он отображается как представление, все в порядке, но я не могу найти, как сохранить его в файл (в коде, не спрашивая пользователя о загрузке). У меня есть такой код:

use DOMPDFModule\View\Model\PdfModel;

$viewModel = new PdfModel($variables);
$viewModel->setTemplate('pos/stocklist/' . $type);
$viewModel->setOption('paperSize', 'a4');
$viewModel->setOption('paperOrientation', 'portrait');
$viewModel->setOption('fileName', 'stock.pdf');

Я пытался сделать это таким образом, но метода рендеринга не существует:

$output = $viewModel->render();
$handle = fopen($file_path.DIRECTORY_SEPARATOR.$file_name , 'w');
fwrite( $handle,$output );
fclose( $handle );

Ценю твою помощь.


person user2248850    schedule 05.04.2013    source источник


Ответы (1)


Пример на странице README проекта github показывает, что $viewModel возвращается из действия контроллера. Кроме того, параметр filename, который вы уже указали, должен заставить файл загружаться, а не отображаться в браузере.

Автор реализовал стратегию просмотра/рендерер, который создает фактический объект dompdf и автоматически отображает модель представления для вас, аналогично существующему поведению zf2, поэтому вам не нужно сокращать жизненный цикл MVC.

person James Newell    schedule 14.07.2013
comment
У меня такая же ситуация, как и у оригинального плаката. Мне нужно отобразить PDF-файл из другой модели, где представление не существует. Знаете ли вы, есть ли способ вызвать его вручную, чтобы мы могли сгенерировать PDF-файл и сохранить его в файл без использования представления/контроллера? - person fistameeny; 19.08.2013
comment
Да, вы можете использовать диспетчер служб, чтобы получить визуализатор представления, а затем вручную отобразить представление, подобное ответу, данному на этом Ответ SO. Вместо получения viewrenderer от сервис-менеджера вам понадобится ViewPdfRenderer. - person James Newell; 02.09.2013