|
|
Línea 1: |
Línea 1: |
− | {{cleanupbox
| + | Nombre Real: Jaro Marval |
− | |image=[[Archivo:Import.png|40px]]
| |
− | |texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br />
| |
− | <span style="font-size:90%">Puedes tomar la información que aqui se encuentra pero no nos hacemos responsable</span>
| |
− | }}
| |
− | | |
− | helpers para crear de forma simple un datagrid (con algunas opciones adicionales), inspirado en el datagrid del FiDeLio
| |
− | | |
− | == Código del helpers ==
| |
− | <source lang="php">
| |
− | | |
− | <?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;
| |
− | }
| |
− | }
| |
− | ?>
| |
− | | |
− | </source>
| |
− | | |
− | == Modo de Uso ==
| |
− | | |
− | === En el controlador ===
| |
− | | |
− | Aquí definimos algunos parámetros para dar una respuesta bastante completa del datagrid
| |
− | | |
− | <source lang="php">
| |
− | | |
− | // 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',
| |
− | 'Unidad' => 'nombre',
| |
− | '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'
| |
− | );
| |
− | | |
− | </source>
| |
− | | |
− | === En la vista ===
| |
− | | |
− | | |
− | <source lang="php">
| |
− | <?php echo Registro::datagrid($modelo, $campos, $opciones, $adicionales) ?>
| |
− | </source>
| |
− | | |
− | | |
− | [[Categoría:Tutoriales KumbiaPHP]]
| |