[SOLUCIONADO] Problemas al recuperar datos en evento de Seleccion

Hola, estoy teniendo el siguiente problema:

Tengo creada toda la interfaz, la cual funciona de maravillas para los eventos de alta en cualquiera de los cuadros/formulario/filtros involucrados (adjunto una foto del árbol)… los filtros también funcionan, y los cuadros cargan la información sin problemas.

Sin embargo, al hacer la selección de un elemento de la fila, simplemente muere el proceso, y no puedo rescatar cual es el problema. El código es de lo más sencillo, y me ha funcionado en el resto de la aplicación.


<?php...
	function evt__cargos_cuadro__seleccion($seleccion)
	{
		var_dump($seleccion); //LLEGA CON LA INFORMACION {ID}
		$this->dep('docentes_cargos')->cargar($seleccion); //pareciera estar generando el error aquí, pero no registra el evento.
	}

Quizá esté relacionado con http://comunidad.siu.edu.ar/index.php?topic=1784.0, pero no tengo idea de que puede estar fallando. (El código del docente, que estaría en la variable con la que tengo problema en la pregunta que cito, lo estoy forzando a un valor válido para probar la interfaz).

Lo único que se me ocurre es que sea un tema de visibilidad, herencia o algo por el estilo que se me está escapando.
El ci dentro de Cargos está así, en forma distinta del resto para ver si el problema era que se definían todos los eventos en el mismo contenedor de edición. En cualquier caso, me genera el mismo error.

Mil gracias de antemano!!!


Hola Martin,

muy probablemente el problema no esta en la carga del datos_tabla (del log se desprende que encontro una fila) sino en alguna otra parte del codigo, pareciera ser que se trata de un fatal error ya que se corta la generacion de la pantalla. Si pudieras debuguear los metodos un poco mas para achicar el rango de lineas donde se te puede estar cortando y asi atacarlo mas puntualmente seria barbaro (yo para no pedirte todo el codigo del CI).

Saludos
Richard

Te paso el código del ci_cargos_prueba (ahora llamado ci_docentes_cf_edicion_cargos), del ci_docentes_cf_edicion, y del ci_docentes_cf_seleccion, con todo lo que falta actualmente comentariado… es decir, no hace falta ya que se evita.
La interfaz funciona sin problemas… la selección, no hay manera. El código del datos_tabla, get_listado, funciona para el cuadro, por lo que eso asumo que no es.
Y el formulario se carga en forma inicial, sin problemas también.
Tenía el formulario con un template, lo saqué… lo estoy manejando por defecto. Tenía algunos efs, desactivados, ya que solo son necesarios en algunos casos, y también los activé. Las altas funcionan, es decir, todos los datos se están considerando.

Te adjunto una foto del log y otra del mensaje de seguimiento de las notificaciones que puse en los distintos eventos.


<?php
class ci_docentes_cf_edicion_cargos extends toba_ci
{
	//-----------------------------------------------------------------------------------
	//---- cargos cuadro ----------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__cargos_cuadro(toba_ei_cuadro $cuadro)
	{
		toba::notificacion()->agregar('cargos cuadro conf ');
		$cuadro->set_datos($this->dep('docentes_cargos')->get_listado(21));
	}

	function evt__cargos_cuadro__seleccion($seleccion)
	{
		var_dump($seleccion);
		$this->dep('docentes_cargos')->cargar($seleccion);
	}

	//-----------------------------------------------------------------------------------
	//---- cargos formulario ------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__cargos_formulario(toba_ei_formulario $form)
	{
		toba::notificacion()->agregar('cargos formulario conf');
		if ($this->dep('docentes_cargos')->esta_cargada()) {
			$datos->$this->dep('docentes_cargos')->get();
			$form->set_datos($datos);
		} 
	}
}
?>

<?php
class ci_docentes_cf_edicion extends toba_ci
{
	protected $s__id_docente;
	
	function get_docente()	
	{
		return $this->controlador->dep('docentes');
	}
	
	function ini()
	{
		toba::notificacion()->agregar('evt ini');
		$s__id_docente = $this->get_docente()->get_columna('id');
	}

	function evt__volver()
	{
		toba::notificacion()->agregar('evt volver');
		$this->disparar_limpieza_memoria();
		$this->get_docente()->resetear();
		$this->controlador->set_pantalla('seleccion');
	}
}
?>
<?php
class ci_docentes_cf_seleccion extends toba_ci
{
	
	function get_editor()
	{
		return $this->dep('ci_docentes_cf_edicion');
	}

    function conf()
    {
        if ($this->dep('docentes')->esta_cargada()) {
			$this->set_titulo('DOCENTE: '.$this->dep('docentes')->get_columna('apellido').', '.$this->dep('docentes')->get_columna('nombre'));
        } else { 
        	$this->set_titulo('Gestión de Docentes');
        }
    }

	//-----------------------------------------------------------------------------------
	//---- cuadro -----------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__cuadro(toba_ei_cuadro $cuadro)
	{
		$cuadro->set_datos($this->dep('docentes')->get_listado());
	}

	function evt__cuadro__seleccion($seleccion)
	{
		$this->dep('docentes')->cargar($seleccion);
		$this->set_pantalla('edicion');
	}
}
?>

La verdad, no sé por donde puede estar el problema…
Ojo, en el log, el registro que me devuelve, es el docente, ESE FUNCIONA!!! jeje… es el último código que te muestro.
El que falla, es el de cargos de ese docente, el primer código que te paso.

Acepto sugerencias de codificación que hagan que esto funcione…!!! te paso la interfaz como va quedando también en un comprimido, cosa de que veas como viene la mano. La idea es que la interfaz quede asi, ya que todo está relacionado y hay controles para hacer entre los valores de una y otra pestaña. Sin embargo, cada pestaña tiene un ABM totalmente independiente. Por eso lo manejé con datos_tabla separados y de la forma que se muestra en el arbol de componentes que te pasé antes.


Hola Martin,

creo que el problema puede estar en el siguiente metodo, pareciera que tenes un error de sintaxis.


function conf__cargos_formulario(toba_ei_formulario $form)
	{
		toba::notificacion()->agregar('cargos formulario conf');
		if ($this->dep('docentes_cargos')->esta_cargada()) {
			$datos->$this->dep('docentes_cargos')->get();                           //Se te mezclo el = con la ->... fijate que seria $datos = 
			$form->set_datos($datos);
		} 
	}

Lo que cambiaria yo es la forma en la cual vas sacando msg para debug.
Los toba::notificacion()->agregar(); los cambiaria por toba::logger()->debug(); y si necesitas sacar algo por pantalla porque tenes problemas con el log entonces lo que haria es un ei_arbol($variable, $titulo).

Saludos
Richard

El error estaba (se solucionó en forma inmediata hace rato)… es un copiar pegar de un código intermedio que mantuvo el error. Pero la falla sigue estando.

El debug lo pruebo.
En el ei_arbol, que valores tomarían $variable, $titulo? asumo que $variable es el dump de alguna variable que quiero seguir, y $titulo algo arbitrario que se me ocurra en el momento???

Podrias poner algo asi como ei_arbol($datos, ‘datos de los cargos del docente’);

Con respecto a la falla, por como se corta el log me sigue pareciendo que se trata de un fatal error, si no te tira nada en pantalla a pesar de tener en php.ini (error_reporting = E_ALL y display_errors=On) lo que podrias hacer es fijarte en el log de apache (errors.log) alli deberias tener un renglon detallando que fue hizo reventar la ejecucion.

Saludos

Ahora está funcionando!!! con la misma estructura que tenía inicialmente.
La verdad, me cuesta encontrar la razón, pero seguro ha sido un compendio de mínimos errores o fallas. Corregí varias cosas, me ayudé con el debug para ver datos, solucioné lo de la variable que se referenciaba del tema y después de algunos ajustes, ayudado por los errores que me comenzo a mostrar PHP (ni sabía que existía la posibilidad), salió funcionando.
Te agradezco muchisimo por la ayuda!!!