Facebook Fanpage


  • Enviar formulario con ajax jquery

    En el siguiente ejemplo, os mostraré como enviar un formulario vía AJAX, este proceso facilitará las consultas necesarias a PHP, todo ello...
  • Descifrando la Seguridad: El Fascinante Mundo de los Criptosistemas de Clave Pública

    Entrada 1: La Revolución de la Criptografía Asimétrica¿Alguna vez te has preguntado cómo puedes enviar información confidencial a través de internet...
  • Cómo configurar un servidor FTP sobre CentOS 7

    Instalación y puesta en marcha de vsftpd Instalar vsftpd en CentOS 7 es sencillo, en esta versión todavía se sigue usando Yum, el gestor de...
  • Oracle Dumpdir – Import, Export y el uso de Directorios.

    Oracle Dumpdir  Import, Export y el uso de Directorios. Cuando tenemos diferentes objetos de la base, ya sea una tabla, datos, etc y...
  • Solución a ORA-65096: invalid common user or role name en Oracle

    Solución a ORA-65096: invalid common user or role name en Oracle Hola a todos, hoy explicaré como solucionar un problema común en Oracle al...
  • Asignar permisos correctos a carpetas 755 y ficheros 644 de forma masiva

    Asignar permisos correctos a carpetas 755 y ficheros 644 de forma masiva Por defecto, en el FTP de una web los permisos deben ser los siguientes:...
  • Publicar aplicación WAR/JSP/SERVLET/TOMCAT/MYSQL en servidor dedicado/vps cPanel

    Publicar aplicación war con conexión a mysql.1. Ingresar al cPanel2. En la opción "Mysql Bases de datos", crear una base de datos, un usuario de...
  • Generar jar con NetBeans incluyendo Bibliotecas Externas Java

    Hola amigos, después de buscar un poco acerca de como incluir las librerías que utilizamos en nuestros proyectos Java...
  • Subir imagen al servidor con Yii Framework y eliminar imagenes del servidor

    En esta ocacion les traigo la manera de como subir imagenes al servidor y una ves subidas las imagenes como eliminarlas del servidor, este ejemplo es...
  • crear host virtual

    Cómo crear un VirtualHost en ubuntu y apache En este post veremos qué es y cómo crear un virtual host utilizando ubuntu y apache. ¿Qué es un...
  • Enviar formulario con ajax jquery

    En el siguiente ejemplo, os mostraré como enviar un formulario vía AJAX, este proceso facilitará las consultas necesarias a PHP, todo ello...
  • Descifrando la Seguridad: El Fascinante Mundo de los Criptosistemas de Clave Pública

    Entrada 1: La Revolución de la Criptografía Asimétrica¿Alguna vez te has preguntado cómo puedes enviar información confidencial a través de internet...
Previous Next

martes, 30 de octubre de 2012

Reportes en Yii a partir de una busqueda

Amigos hoy les traigo una forma de como generar Reportes en Yii a partir de una búsqueda y buscando en los foros de Yii me encontré con esta información espero les sirva como me sirvió a mi, sin mas aquí esta la explicación:

- En la función search() del modelo en cuestión agregamos al final (antes del retorno) las siguientes lineas de código:

     $_SESSION['datos_filtrados'] = new CActiveDataProvider($this, array(
                        'criteria'=>$criteria,
                        'sort'=>$sort,
                        'pagination'=>false,
                ));

Donde $criteria son los datos de filtrado y $sort el arreglo de ordenación, eso nos guardará en una variable de sesión la ultima búsqueda realizada, si no hemos realizado ninguna búsqueda estaremos guardando todos los resultados del listado, es importante colocar en false la paginación para que pueda traernos todos los resultados.

- En la vista admin agregar el botón de exportar con array('label'=>'Exportar a PDF', 'url'=>array('pdf')), en la configuración del menú.

- En el controlador agregamos la siguiente función:

public function actionPdf()
    {
        $this->render('pdf');
    }

- Agrega la action pdf en el accessRules del controlador, para que los usuarios del sistema puedan tener permisos de utilizarla.

- La librería que uso y recomiendo para exportar pdf es MPDF, la pueden descargar de su pagina oficial, una vez descargada la copian en extensions.

- Un ejemplo para la vista pdf es el siguiente:

<?
$pdf = Yii::createComponent('application.extensions.MPDF52.mpdf');
$dataProvider = $_SESSION['datos_filtrados']->getData();
$contador=count($dataProvider);
    $html.=' <link rel="stylesheet" type="text/css" href="'.Yii::app()->request->baseUrl.'/css/pdf.css" />

    <table align="center"><tr>
    <td align="center"><b>LISTADO DE CONTRATOS</b></td>
    </tr></table>
    Total Resultados: '.$contador.'
        <table class="detail-view2" repeat_header="1" cellpadding="1" cellspacing="1" width="100%" border="0">
            <tr class="principal">
                <td class="principal" width="7%">&nbsp;N° Control</td>
                <td class="principal" width="7%">&nbsp;N° Contrato</td>
                <td class="principal" width="19%">&nbsp;Empresa</td>
                <td class="principal" width="10%">&nbsp;Estado</td>
                <td class="principal" width="9%">&nbsp;Monto Contratado</td>
                <td class="principal" width="25%">&nbsp;Objeto Contrato</td>
                <td class="principal" width="14%">&nbsp;Personal Actuante</td>
                <td class="principal" width="9%">&nbsp;Tipo Informe</td>
            </tr>';
         $i=0;
         $val=count($dataProvider);
         
         while($i<$val){
$html.='
            <tr class="odd">
                <td class="odd" width="7%">&nbsp;'.$dataProvider[$i]["num_control"].'</td>
                <td class="odd" width="7%">&nbsp;'.$dataProvider[$i]["num_contrato"].'</td>
                <td class="odd" width="19%">&nbsp;'.$dataProvider[$i]["empresa"].'</td>
                <td class="odd" width="10%">&nbsp;'.$dataProvider[$i]["estado0"]["nombre_estado"].'</td>
                <td class="odd" width="9%">&nbsp;'.$dataProvider[$i]["monto_contratado"].'</td>
                <td class="odd" width="25%">&nbsp;'.$dataProvider[$i]["objeto_contrato"].'</td>
                <td class="odd" width="14%">&nbsp;'.$dataProvider[$i]["personal_actuante"].'</td>
                <td class="odd" width="9%">&nbsp;'.$dataProvider[$i]["informe0"]["nombre_tipo_informe"].'</td>
            ';
    $html.='</tr>'; $i++;
                        }
    $html.='</table>';
$mpdf=new mPDF('win-1252','LETTER-L','','',9,9,24,10,5,5);
$mpdf->WriteHTML($html);
$mpdf->Output('Reporte_Contratos.pdf','D');
exit;
?>

- Como vemos al principio del ejemplo tomamos los datos filtrado mediante la variable de sesión y disponemos de ellos como queramos en el pdf

Espero que les sirva de ayuda, ahí en el ejemplo puse como acceder incluso a campos de las otras tablas mediante las relaciones.


Via: http://www.yiiframework.com/forum/index.php?/topic/22686-reportes-en-yii-a-partir-de-una-busqueda/

0 comentarios:

Publicar un comentario