Helper Tabla
Sumario
Creando Tablas Facilmente con el Helper Tabla
Con este helper se pueden crear tablas facilmente a partir de un modelo Activerecord y especificando los campos que se desean mostrar del mismo.
cabeceras('columna 1','columna 2','columna N')
Asigna los nombres de las columnas que tendrá la tabla.
Tabla::cabeceras('cedula','nombres','apellidos');
anchoCols('ancho 1','ancho 2','ancho N')
Asigna los anchos que tendrán cada una de las columnas de la tabla.
Tabla::anchoCols('100px','100px','');
campos('campo1','campo2','campoN')
Establece los campos del modelo que se mostraran en la Tabla.
Tabla::campos('cedula','nombre','activo');
modelo($modelo)
indica el modelo con los datos a mostrar en la tabla.
Tabla::modelo($usuarios); // Donde $usuarios es el resultado de una consulta, ejemplo $usuarios = new Usuarios()->find();
link($url,$texto,$img = false)
Crea una columna al final de la tabla con un link hacia la url especificada, ademas se puede pasar la direccion de una imagen.
Tabla::link('usuarios/editar','editar');
Tabla::link('usuarios/eliminar','eliminar','eliminar.png');
urlPaginador($url)
En caso de que el resultado de la consulta esté paginado, se debe especificar la url del paginador.
Tabla::urlPaginador('usuarios/index');
crear()
crea la tabla segun los parametros antes especificados
echo Tabla::crear();
Ejemplo de Uso sin paginador
En el controlador
public function index(){
$this->usuarios = new Usuarios()->find();
}
En la vista
<?php echo View::content() ?>
<?php
Tabla::cabeceras('cedula','nombres','apellidos','fecha de nacimiento'); //especifico los nombres de las columnas
Tabla::anchoCols('100px' , '200px' , '200px' , '120px' , '120px'); // el ancho de mas será usado para el link que se mostrará
Tabla::campos('cedula','nombres','apellidos','fecha_nac');
Tabla::link('usuarios/editar','editar');
Tabla::modelo($usuarios);
echo Tabla::crear();
?>
}
Ejemplo de Uso con paginador y llamando a un metodo del modelo
Se puede especificar un metodo del modelo en vez de un campo , el helper automaticamente llamará a ese metodo si existe en el modelo
En el modelo
class Usuarios extends ActiveRecord{
public function getNombreCompleto(){
return $this->nombres . ' ' . $this->apellidos ;
}
}
En el controlador
public function index($pagina = 1){
$this->usuarios = new Usuarios()->paginate("page: $pagina","per_page: 10");
}
En la vista
<?php echo View::content() ?>
<?php
Tabla::cabeceras('cedula','nombres y apellidos','fecha de nacimiento'); //especifico los nombres de las columnas
Tabla::anchoCols('100px' , '300px' , '120px' , '120px'); // el ancho de mas será usado para el link que se mostrará
Tabla::campos('cedula','getNombreCompleto','fecha_nac');
Tabla::link('usuarios/editar','editar');
Tabla::modelo($usuarios);
Tabla::urlPaginador('usuarios/index');
echo Tabla::crear();
?>
}
Ejemplo de Uso Llamando a un campo de una tabla secundaria
Se pueden especificar campos de tablas relacionadas , indicando el nombre de la tabla, un punto, y el nombre del campo ó metodo de la tabla secundaria, ejemplo: "usuarios.cedula"
En el modelo
class Sesiones extends ActiveRecord{
public function initialize() {
$this->belongs_to('usuarios','fk: id_usuario');
}
public function getHoraFecha(){
return $this->hora . ' , ' . $this->fecha ;
}
}
En el controlador
public function index($pagina = 1){
$this->sesiones = new Sesiones()->find();
}
En la vista
<?php echo View::content() ?>
<?php
Tabla::cabeceras('Cedula de Usuario','Nombre del Usuario','Hora y Fecha','Acción Realizada'); //especifico los nombres de las columnas
Tabla::anchoCols( '120px' , '250px' , '200px' , '' );
Tabla::campos('usuarios.cedula','usuarios.getNombreCompleto','getHoraFecha','accion'); //llamo a los campos y metodos de otras tablas y del modelo
Tabla::modelo($sesiones);
Tabla::urlPaginador('sesiones/index');
echo Tabla::crear();
?>
}
Ejemplo de Uso sin especificar columnas ni campos
En este caso se crea una tabla con todos los campos no primarios del modelo:
En el controlador
public function index($pagina = 1){
$this->sesiones = new Sesiones()->find();
}
En la vista
<?php echo View::content() ?>
<?php
Tabla::modelo($sesiones);
echo Tabla::crear();
?>
}