Tengo la siguiente consulta, hemos armado un formulario, que devuelve x cantidad de datos perfectamente,
pero queremos que de esos datos uno en particular devuelva un valor dependiente de una consulta.
Como se puede hacer esto?
Intenté poniendo que el campo lo toma desde una clase de consulta de PHP pero me sale un error.
Cuando cargo con todos los valores anda bien, pero hay valores, por ejemplo codigo de carrera que lo quiero reemplazar por el nombre, y para esto es que necesito hacer dicha consulta… el error es como que el parametro me llega nulo desde la consulta, pero si hago un echo de la variable $depen si tiene valor…
Por lo que veo al definir esa funcion consulta para sacar el valor no tiene en cuenta el parametro que se le pasa en la configuracion del formulario, es asi?
De ser así como se puede hacer para que un campo en particular tome el valor de una consulta?
Les transcribo:
** Consulta en consulta.php **
function get_dependencia($depen=null)
{
$sql = "SELECT nombre FROM uas WHERE ua = $depen;";
return toba::db()->consultar($sql);
}
** Configuración de formulario en ci_seleccion.php **
function conf__control_cabecera(toba_ei_formulario $form)
{
$depen = quote("{$this->s__datos_filtro['dependencia']}");
$form->set_datos($this->dep('relacion')->tabla('acta_cabecera')->get());
consultas::get_dependencia($depen);
}
1.- Estan trabajando sobre un ef_editable o sobre un ef con opciones (ej:combo).
2.- Estan trabajando sobre un formulario_ml o sobre un formulario comun.
3.- El campo en cuestion depende de otro campo dentro del formulario… o simplemente es la descripcion de un campo codigo.
Si fuera simplemente la descripcion del codigo de carrera y no depende de ningun otro campo del formulario, porque no cargarlo en tiempo de configuracion, despues de todo ahi ya conoces la descripcion, si depende de otro campo entonces deberias marcar la cascada correspondiente para que en runtime se actualice.
1- Estamos trabajando sobre un ef_fijo, esta bien?
2- Es un formulario común (devuelve una sola linea)
3- Es la descripcion de un campo codigo, es decir, devuelve un codigo y nosotros necesitamos que vaya la descripcion que corresponde a ese codigo.
De esta manera traemos todos los datos:
$form->set_datos($this->dep(‘relacion’)->tabla(‘acta_cabecera’)->get());
Luego ese campo en particular devuelto con la linea anterior lo queremos cambiar por su descripcion, que se encuentra en otra tabla.
Es unicamente para visualizacion asi que esta perfecto.
3- Es la descripcion de un campo codigo, es decir, devuelve un codigo y nosotros necesitamos que vaya la descripcion que corresponde a ese codigo.
De esta manera traemos todos los datos:
$form->set_datos($this->dep('relacion')->tabla('acta_cabecera')->get());
Luego ese campo en particular duvuelto con la linea anterior lo queremos cambiar por su descripcion, que se encuentra en otra tabla.
Bueno aca tenes un par de opciones,
1.- Podes agregar la descripcion al datos_tabla como una columna externa (total es una FK cuyo destino siempre existe) y dejas que el dt se encargue de obtener el valor por vos. Al hacer el get() te va a retornar tanto el codigo como la descripcion del mismo.
2.- Podes agregar al formulario el codigo como un ef_oculto y hacer que el ef_fijo sea un esclavo (esquema de cascadas) de dicho ef_oculto (hacking Toba 1.0)
3.- Recuperas vos manualmente el valor y lo asignas a los datos a ser seteados al formulario.
En particular yo prefiero la opcion 1… o en el peor de los casos la 3… la opcion 2 hace el truco… pero si alguien nuevo encuentra el formulario y no tiene conocimiento de porque esta hecho asi puede mutilartelo, de mas esta decir que es poco intuitiva y rebuscada aunque el resultado sea el mismo.