Buenas, la verdad es que después de renegar un rato y de buscar en el foro, no encontré nada que me ayude a la duda que tengo.
Tengo un ci con un pantalla y dentro de la misma varios formularios. Lo que busco es que existan dos eventos que como acción exporten a pdfs, y en un caso incluya algunos formularios y en el otro caso otros.
Genero los eventos, les pongo en la " Acción predefinida" => Exportar PDF.
Luego tengo la función vista_pdf, que me genera en ambos casos el mismo archivo. Los identificadores de los dos eventos son obviamente distintos. Entonces ¿Como hago para que desde la función vista_pdf distinguir si es uno u otro evento, o generar eventos (evt__etc()) particulares para los botones y tener los datos en formato toba_vista_pdf?
creo que una posible forma para lograr eso es la siguiente:
Creas los dos eventos con un vinculo a la misma operacion
En ambos casos le indicas que el nombre del servicio a disparar es ‘vista_pdf’
En el metodo conf() del ci (o conf__nombre_pantalla si los botones estan en una especifica) le agregas un parametro al vinculo para usar de bandera, ej:
Gracias por la respuesta, pero aun tengo una duda:
Si genero los eventos respectivos y llamo a la función vista_pdf, necesito pasarle como parámetro un objeto “toba_vista_pdf” con los datos de los formularios y todo eso. Como Toba eso lo esta haciendo automáticamente, no opte por una opción de este estilo porque no sabia como crear dicho objeto.
Hola Tomás, toba crea este objeto pdf en base al servicio solicitado (vista_pdf), luego como a cada evento le indicas un parámetro diferente, del lado del servidor podés chequear esa bandera para ver cuál de ellos se disparó y así decidir que hacer.
El objeto “toba_vista_pdf” no lo brindas vos en este caso, lo genera toba automaticamente al atender el servicio “vista_pdf”, lo que si vas a brindar vos es la generacion del pdf de los componentes que queres en esa exportacion.
Asi como en cada pedido de pagina, en la atencion del servicio ‘vista_pdf’ se recorren los componentes y se dispara su evento de configuracion, por lo tanto no debes preocuparte por pasarle los datos a los formularios, estos deberian cargarlos automaticamente mediante sus metodos de configuracion respectivos. Un ej del proyecto toba_referencia:
//Cambio lo márgenes accediendo directamente a la librería PDF
$pdf = $salida->get_pdf();
$pdf->ezSetMargins(80, 50, 30, 30); //top, bottom, left, right
//Pie de página
$formato = 'Página {PAGENUM} de {TOTALPAGENUM}';
$pdf->ezStartPageNumbers(300, 20, 8, 'left', $formato, 1); //x, y, size, pos, texto, pagina inicio
//Inserto los componentes usando la API de toba_vista_pdf
$salida->titulo($this->get_nombre());
$salida->mensaje('Nota: Este es el Principal');
$this->dependencia('filtro')->vista_pdf($salida);
$this->dependencia('cuadro')->vista_pdf($salida);
$this->dependencia('formulario')->vista_pdf($salida);
$salida->salto_pagina();
$salida->mensaje('Nota: Esta es una copia');
$this->dependencia('filtro')->vista_pdf($salida);
$this->dependencia('cuadro')->vista_pdf($salida);
$this->dependencia('formulario')->vista_pdf($salida);
$salida->salto_pagina();
$salida->mensaje('Este es un formulario ML que esta en otra pagina');
$salida->separacion();
$this->dependencia('ml')->vista_pdf($salida);
En tu caso deberias tener un condicional que te elija de acuerdo al parametro que pasaste en el vinculo que dependencia exportar.