Para poder exportar datos filtrados del gridview en Yii primeramente debemos de seguir esto.
Cuando se tiene ese primer paso 100% funcional hacer lo siguiente:
1- Ir al modelo deseado y agregar lo siguiente a la función search (en este caso en el modelo Productos):
//Esto es lo que se debe agregar $session=new CHttpSession; $session->open(); $session['productos_records']=$criteria; //Esto para guardar la criteria en la sesión actual para usarlo posteriormente. //Esto lo pongo nada más como referencia return new CActiveDataProvider($this, array( 'criteria'=>$criteria, ));
1- En el controlador productos (esto solo en este caso) debemos sustituir la función actionGenerarPdf() por lo siguiente:
public function actionGenerarPdf()
{
$session=new CHttpSession;
$session->open();
if(isset($session['productos_records']))
//Si hay datos filtrados entonces usar la criteria guardada en la sesion (esto lo guardamos en la funcion search() del modelo)
{
$model==Productos::model()->findAll($session['productos_records']);
}
else
//Si no hay datos filtrados exportar todo
{
$model =Productos::model()->findAll();
}
$mPDF1 = Yii::app()->ePdf->mpdf('utf-8','A4','','',15,15,35,25,9,9,'P'); //Esto lo pueden configurar como quieren, para eso deben de entrar en la web de MPDF para ver todo lo que permite.
$mPDF1->useOnlyCoreFonts = true;
$mPDF1->SetTitle("JuzgadoSys - Reporte");
$mPDF1->SetAuthor("JuzgadoSys");
$mPDF1->SetWatermarkText("JuzgadoSys");
$mPDF1->showWatermarkText = true;
$mPDF1->watermark_font = 'DejaVuSansCondensed';
$mPDF1->watermarkTextAlpha = 0.1;
$mPDF1->SetDisplayMode('fullpage');
$mPDF1->WriteHTML($this->renderPartial('pdfReport', array('model'=>$model), true)); //hacemos un render partial a una vista preparada, en este caso es la vista pdfReport
$mPDF1->Output('Reporte_Productos'.date('YmdHis'),'I'); //Nombre del pdf y parámetro para ver pdf o descargarlo directamente.</pre>
}
Con eso ya podrán exportar a PDF datos filtrados o todo lo que hay en la tabla sin problema alguno.
