Simple datagrid con opciones
De KumbiaPHP Framework Wiki
helpers para crear de forma simple un datagrid (con algunas opciones adicionales), con base en el Simple datagrid del FiDeLio
Contenido |
[editar] Código del helpers
<?php class Registro { /** * Helpers para crear un datagrid sencillo a partir de un ActiveRecord * Ejemplo: * Sin Opciones * <code> * $campos = array( * 'Codigo' => 'id', * 'Nombre' => 'nombre', * 'Telefono' => 'telefono', * 'Direccion' => 'direccion'); * </code> * Con Opciones * <code> * $campos = array( * 'Codigo' => 'id', * 'Nombre' => 'nombre', * 'Telefono' => 'telefono', * 'Direccion' => 'direccion', * 'Opciones' => '$'); * * $opciones = array( * 'Actulizar' => 'controlador/actualizar/', * 'Modificar' => 'controlador/modificar/', * 'Detalles' => 'controlador/detalles/', * 'Borrar' => 'controlador/borrar/'); * </code> * Adicionales * <code> * $campos = array( * 'sexo' => 'Femenino|Masculino', * 'estado' => 'Activo|Inactivo', * 't_vivienda' => 'Propia|Alquilada|Heredada|Choza'); * </code> * * @param Object $modelo * @param Array $campos * @param Array/Null $opciones * @param Array/Null $adicionales * @return String * */ public static function datagrid($modelo, $campos, $opciones = NULL, $adicionales = NULL) { // Agregar el ccs para el datagrid Tag::css('datagrid'); // Cabecera $grid = "<div id=\"datagrid\">"; $grid .= "<table border=\"0px\" cellpadding=\"0px\" cellspacing=\"0px\" align=\"center\">"; $grid .= "<thead><tr>"; // Titulo de la tabla foreach ($campos as $titulo => $valor): // Campo pequeño si es Id o Código if ( $titulo == "Código" || $titulo == "Id" ): $grid .= "<th width=\"10px\">"; else: $grid .= "<th>"; endif; $grid .= $titulo; $grid .= "</th>"; endforeach; $grid .= "</tr></thead><tbody>"; $i = 1; // Datos de la tabla if (count($modelo)) : foreach ($modelo as $model): // Columnas pares o impares if ( ($i%2) == 0 ): $colm = 'par'; else: $colm = 'impar'; endif; $grid .= "<tr class=\"$colm\">"; $i++; // Data foreach ($campos as $campo): // Si es activado la fila Opciones if ( $campo == '$' ): $grid .= "<td align=\"center\" width=\"150\">"; $cant = count($opciones); $j = 1; foreach ($opciones as $opcion => $link): $link = $link . $model->id; $grid .= Html::link($link, $opcion); if ($cant != $j): $grid .= " | "; endif; $j++; endforeach; $grid .= "</td>"; else: // Centrar si el campo es el id if ( $campo == "id" ): $campoc = "align=\"center\""; else: $campoc = "align=\"left\""; endif; if (count($adicionales)) : if (array_key_exists ($campo, $adicionales)): $addons = explode("|", $adicionales[$campo]); $grid .= "<td $campoc>" . $addons[$model->$campo] . "</td>"; else: $grid .= "<td $campoc>" . $model->$campo . "</td>"; endif; else: $grid .= "<td $campoc>" . $model->$campo . "</td>"; endif; endif; endforeach; $grid .= "</tr>"; endforeach; else: $grid .= "<tr><td colspan='" . count($campos) . "' align='center'>No hay registros </td></tr>"; endif; $grid .= "</tbody></table></div>"; return $grid; } } ?>
[editar] Modo de Uso
[editar] En el controlador
Aquí definimos algunos parámetros para dar una respuesta bastante completa del datagrid
// Datos para datagrid $this->modelo = Load::model('datos_personales')->find(); $controlador = $this->controller_name; $this->campos = array( 'Credencial' => 'credencial', 'Primer Nombre' => 'primer_nombre', 'Primer Apellido' => 'primer_apellido', 'Sexo' => 'sexo', 'Opciones' => '$' ); // Definimos las acciones que tendremos en la columna Opciones $this->opciones = array( 'Modificar' => "$controlador/crear/", 'Borrar' => "$controlador/borrar/" ); // El asignamos unos String equivalente para el campo sexo esto // para que no muestre un resultado más amigable que 0 ó 1 // podría servir igual para estado en que se obtendría Activo ó Inactivo $this->adicionales = array( 'sexo' => 'Femenino|Masculino' );
[editar] En la vista
<?php echo Registro::datagrid($modelo, $campos, $opciones, $adicionales) ?>
Y ya listo sencillo tenemos un datagrid con algunas opciones adicionales
Realizado por Jaro Marval (Jamp)

