Hola, gente, quisiéramos usar optgroup de los select html ¿Alguien tiene alguna idea de como hacerlo en toba?
Muchas gracias.
Hola, gente, quisiéramos usar optgroup de los select html ¿Alguien tiene alguna idea de como hacerlo en toba?
Muchas gracias.
Hola Fernando,
creo que para hacer uso de los optgroup, deberias tener una nueva clase de ef que extienda del combo (tanto para el lado del server, como para el lado de js), luego deberias subclasear el formulario en cuestion y redefinir el metodo que crea los efs, para que cuando es de clase combo, te instancie tu propia clase en lugar de la de toba, el metodo en cuestion es crear_elementos_formulario.
Esto es porque no solo recibis los datos de otra manera y tenes que enviar otro HTML, sino que en JS podes necesitar desactivar un grupo en particular, con lo cual tambien necesitas que la API te permita esas cosas.
Saludos
Hola Fernando, el uso de los optgrup también me interesan. Si logras hacer algo o si necesitas una mano podemos seguirla por aca.
Saludos.
Alejandro.
Me interesa también, en alguna ocasión lo sugerí como ef nuevo
También quedo atento
Hola, se puede modificar la función combo del toba_form para poder utilizar un array de dos o tres dimensiones.
static function select($nombre,$actual,$datos,$clase="ef-combo", $extra="", $categorias=null)
//Combo STANDART. recibe el listado en un array asociativo
{
if(is_array(current($datos))) {
$categorias = $datos;
}
if(!is_array($datos)) {
//Si datos no es un array, no puedo seguir
$datos= array();
}
$combo = "<select name='$nombre' id='$nombre' class='$clase' $extra>\n";
if (!isset($categorias)) {
foreach ($datos as $id => $desc){
$s = ("$id" == "$actual") ? "selected" : "";
$id = texto_plano($id);
$desc = texto_plano($desc);
$combo .= "<option value='$id' $s>$desc</option>\n";
}
} else {
foreach ($categorias as $categoria => $valores) {
$combo .= "<optgroup label='$categoria'>\n";
foreach ($valores as $id => $desc) {
$s = ($id == $actual) ? "selected" : "";
$id = texto_plano($id);
$desc = texto_plano($desc);
$combo .= "<option value='$id' $s>$desc</option>\n";
}
$combo .= "</optgroup>\n";
}
}
$combo .= "</select>\n";
return $combo;
}
De esta manera $datos puede ser array($categoria=>array($id=>$valor))
Para llenarlo hay que usar alguna función que arme cortes de control.
Puedo usar $form->ef(‘ComoSeLlame’)->set_opciones($datos); o cargarlo en desarrollo desde algún metodo de consulta php.
Saludos.