Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/02/2011, 15:49
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Obtener el contenido de la vista en el controlador

Ahh algo sucio, yo uso un plugin junto con html2pdf:
Código PHP:
Ver original
  1. class Application_Plugin_PdfExport extends Zend_Controller_Plugin_Abstract
  2. {
  3.     private $_exportName = '';
  4.     public function __construct($sExportName)
  5.     {
  6.         $this->_exportName = $sExportName;
  7.     }
  8.    
  9.     public function dispatchLoopShutdown()
  10.     {
  11.         $sExportName = $this->_exportName;
  12.         $Response = $this->getResponse();
  13.         $Response->setHeader('Pragma', 'Public')
  14.                  ->setHeader('Cache-Control', 'no-store, no-cache, must-revalidate')
  15.                  ->setHeader('Cache-Control', 'pre-check=0, post-check=0, max-age=0')
  16.                  ->setHeader('Pragma', 'no-cache')
  17.                  ->setHeader('Expires', '0')
  18.                  ->setHeader('Content-Transfer-Encoding', 'binary')
  19.                  ->setHeader('Content-Type', 'application/pdf')
  20.                  ->setHeader('Content-Disposition', "attachment; filename=\"$sExportName\"");
  21.  
  22.         $sContent = utf8_decode($Response->getBody());
  23.        
  24.         error_reporting(E_ALL ^ E_DEPRECATED);
  25.         require('html2pdf/html2fpdf.php');
  26.         $pdf=new HTML2FPDF();
  27.         $pdf->AddPage();
  28.         $pdf->WriteHTML($sContent);
  29.         $sPDF = $pdf->Output('', 'S');
  30.        
  31.         $Response->setBody($sPDF);
  32.     }
  33. }

Después simplemente desde mi controller reviso si tengo que hacer el render en HTML o en PDF (útil para algunos reportes verlos en HTML o en PDF):
Código PHP:
Ver original
  1. $this->view->data = $aData;
  2.     if ($formato == self::FORMATO_PDF) {
  3.         // Disable Layout
  4.         $layout = Zend_Layout::getMvcInstance();
  5.         $layout->disableLayout();
  6.    
  7.         // Register Excel Export Plugin
  8.         $front = Zend_Controller_Front::getInstance();
  9.         $front->registerPlugin(new Application_Plugin_ExcelExport($sExportName), 101);
  10.     }

Saludos.