Problemas al tratar de generar reportes con jasperreport

Hola
Les quería consultar sobre un problema que tengo al generar los reportes con jasper report. Estoy usando el siguiente script para generar un reporte con el cobro de unos aranceles para alumnos


protected $s__paths;  
function conf__cuadro(toba_ei_cuadro $cuadro){
		$path = toba::proyecto()->get_path();
		$archivos = toba_manejador_archivos::get_archivos_directorio($path,'/.jasper$/',true);
		$datos = array();
		$i = 0;
		foreach ($archivos as $archivo){
			$this->s__path[$i] = $archivo;
			$datos[$i]['path'] = $i;
			$datos[$i]['reporte'] = ucwords(str_replace('_', ' ', basename($archivo, '.jasper')));
			$i++;
		}
		ei_arbol($datos);
		$cuadro->set_datos($datos);
	}
	
	function vista_jasperreports(toba_vista_jasperreports $report)
	{
		$path = toba::memoria()->get_parametro('path');
		if (! isset($path) || ! is_numeric($path) || ! isset($this->s__paths[$path])) {
			throw new toba_error_def("Parámetro no definido");
		}
		$report->set_path_reporte($this->s__paths[$path]);
		$db = toba::instancia()->get_db();
		$report->set_conexion($db);
	}
	
	
    function extender_objeto_js()
	{
		if ($this->get_id_pantalla() == 'pant_cuotas') {
			echo "
				{$this->dep('cuadro')->objeto_js}.evt__imprimir = function(params) {
                    location.href = vinculador.get_url(null, null, 'vista_jasperreports', {'path': params});
					return false;
				}
			";
		}
	} 

Al ejecutar la aplicación e intentar imprimir un reporte me da un error que dice

falta definir el .jasper con set_path_reporte
La verdad no se donde está el problema, porque cuando hago un ei_arbol a la variable s__path, contiene la ruta c:\toba\proyecto/exportaciones/jasper/comprobante.jasper. O un par de veces me da el siguiente error
Unknown hiperlink 0
Alguien me puede ayudar a ver que estoy haciendo mal? O tiene un ejemplo, que no sea el del proyecto referencia, para ver como hacer para sacar los reportes? Muchas gracias!

Hola Victor,

hay dos cosas que se me ocurren:

  • Generar el contenido de la variable s__paths una sola vez, en tu caso se esta generando en todo pedido de pagina que aparece el ei_cuadro, incluido el de la vista jasper.

  • Verificar que tiene s__paths[$path] antes de pasarselo al reporte, podes hacer uso del logger para dejar constancia ahi de que valor se le paso.

No hay mucha ciencia atras de la llamada, si no hay otro componente que tambien este intentando setear el archivo del reporte, tendria que tomar el valor que le pasas por parametro, por eso es importante saber que le llega.

Saludos