Edición de «Usuario:Jamp»
De KumbiaPHP Framework Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 1: | Línea 1: | ||
+ | {{cleanupbox | ||
+ | |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]] |