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.