Checkbox

Haciendo algunas cosillas con el StandardForm de la versión 0.5, me vi con la necesidad de disponer de un input tipo checkbox para un campo booleano. Como no estaba hecho, lo he creado.

Hay que añadir estas líneas al archivo generator.php:

Línea 172:
if($field['Type']=='tinyint(1)'){
	if(!isset($form['components'][$field['Field']]['valueType'])){
		$form['components'][$field['Field']]['valueType'] = "checkbox";
	}
}

Después de haber añadido las anteriores, hay que modificar y añadir esto en la línea 223:
if(!isset($form['components'][$field['Field']]['type'])){
	if(!ereg("tinyint", $field['Type'])) {
		$form['components'][$field['Field']]['type'] = "text";
	} else {
		$form['components'][$field['Field']]['type'] = "checkbox";
	}
}

En el archivo standard.build.php, línea 211, añadir:
case 'checkbox':
Generator::forms_print("<tr><td valign='top' align='right'><label for='flid_".$name."'><strong>".$com['caption']." :</strong></label></td><td>\r\n<input type='checkbox' disabled name='fl_$name' id='flid_$name' style='border:1px solid #FFFFFF'; margin: 0px;");	
						
if(isset($_REQUEST['fl_'.$name]) && $_REQUEST['fl_'.$name]==$com['checkedValue']){
	Generator::forms_print(" checked='checked'  ");
}
if($com["attributes"]){
	foreach($com["attributes"] as $nitem => $item) {
		Generator::forms_print(" $nitem='$item' ");
	}
}
Generator::forms_print(">\r\n</td></tr>");
break;


Hay que aclarar que por ahora esto sólo funciona para MySQL, ya que este motor de BD no posee el tipo de dato boolean, por lo que si tenemos un campo BOOL, BOOLEAN o BIT, internamente lo traducirá a tinyint(1), donde un 1 es true y un 0 es false.

Para otras BD, sólo hay que editar la primera línea que he puesto del archivo generator.php e incluir en la comparación si el tipo es tinyint(1) o boolean, etc.

He hecho algunas pruebas y se guarda un 0 o un 1.

Espero que os sirva a todos.

Comentarios

  • voy a probar a ver si esto funciona en postgres ya que este maneja un tipo de dato bool cualquier cambio te aviso...
  • edited 11:29
    Qué, deivinson, ¿funciona? ¿lo agregaréis al repositorio?
Sign In or Register to comment.