Comment (Comentarios en BD tipo de columna)
+info en:
http://wiki.quid.es/wikidesarrollo/index.php/Framework:Estructura_de_datos
//Ejemplo avanzado de un rango
{"rotulo":"Calor", "ayuda":"Temperatura de la petición", "tipo":"rango", "parametros":{"minimo":"0","maximo":"1", "salto":"0.01", "leyenda":["preciso","creativo"]}}
{"rotulo":"URL Desarrollo" ,"tipo":"url"}
//El siguiente es de una columna de tipo idForaneo:
{"rotulo":"Título Campo","clase":"Centros","tabla":"centros","campo":"nombre"}
//Creo que normalmente clase y tabla coinciden, salvo en proyectos viejos
//ejemplos de correcciones y validaciones
{
"rotulo":"Precio con IVA",
"ayuda":"Introduce un precio antes de aplicar impuestos",
"correcion":"\\.|||,", //Sustituye los campos por comas. (Ver que hay doble barra en la primera parte de la expresión donde debería hacer falta una.)
"validacion":"$(\\.|[0-9])*^" //Valida si todo son numeros o puntos.
//si quieres concatenar varios campos, (en este caso nombre y apellidos)
{"rotulo":"Usuario","clase":"Usuario","tabla":"usuarios","campo":"concat(nombre, ' ', apellidos)"}
//params parametros BD para atributos de controles
//lo importante aquói es el campo adicional "parametros"
{"rotulo":"Ancho en portada","tipo":"numero","parametros":{"sufijo":"%","decimales":"3"}}
// Enumeraciones Enum Enums
// Se crea el campo de tipo Enum, y en longitud las opciones separadas
// por coma: 'Rápido','Amable','Eficaz'
// También se puede poner un valor por defecto, simplemente copiando el valor:
// Rápido (Sin comillas)
No creo que sea un uso muy legítimo, pero a veces queremos agregar propiedades a los campos de una tabla, por ejemplo dividirlos en los que tienen que salir en un editor básico y en uno avanzado.
Para ello, una posible idea es agregar metadatos en el comments, ya que es un json. Luego, desde el formulario, comprobar esos metadatos.
Actualmente Quid no lo soporta directamente, pero se puede hacer. Aquí hay un código que puede servir de ayuda:
$modoBasico = false; //cambiar esto por algo que lo extraiga del tipo de usuario
$campos = $parametros["campos"];
if(!$modoBasico || !$campos || !count($campos)) return $campos;
//obtenemos una lista de los campos sencillos, siendo 'ChatHerramientas' el nombre de la tabla
$columnas = $this->quid->db->estructura['ChatHerramientas']; // <-- Esto es lo interesante
$sencillos = [];
foreach ($columnas as $key => $campo) {
if (!empty($campo['COLUMN_COMMENT'])) {
$comment = json_decode($campo['COLUMN_COMMENT'], true);
if (json_last_error() === JSON_ERROR_NONE && isset($comment['sencillo'])) {
if ($comment['sencillo'] != 0 && $comment['sencillo'] != false) {
$sencillos[] = $key;
}
}
}
}
//filtramos los campos de entrada, dejando únicamente aquellos que cumplen el criterio
foreach ($campos as $grupo => $items) {
$filtrados = array_filter($items, function($item) use ($sencillos) {
return in_array($item['campo'], $sencillos);
});
if (!empty($filtrados)) {
$resultado[$grupo] = array_values($filtrados); // array_values para reindexar los resultados
}
}
return $resultado;
y luego un ejemplo de su uso:
$campos = $this->_filtrarCamposEdicion(["campos"=>[
__("Síntesis de voz") =>[
["campo"=>"pronunciacionAutomatica"],
["campo"=>"idmotorPronunciacion"],
["campo"=>"pronunciacionLimiteLongitud"],
["campo"=>"pronunciacionVoz"],
["campo"=>"audioMostrarTranscripcionAsistente"]
]
]]);
$s.=$this->insertaFormulario([
"escritura"=>true,
"modo"=>"estatico",
"simple" => true,
"campos"=>$campos
]);