Helper Tabla

De KumbiaPHP Framework Wiki
Revisión del 16:27 21 jul 2011 de Manuel j555 (discusión | contribuciones) (Página creada con '== 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 desea...')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)

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();
?>
}