Datagrid Simple Con Paginado
De KumbiaPHP Framework Wiki
Partials para crear de forma simple un datagrid con paginado
En el controlador
Para efecto del ejemplo tenemos el siguiente controller, pero puede ser cualquiera
<?php
class ClienteController extends ApplicationController {
public function page($page=1){
// Paso el resultado de la consulta que sera mostrada en el datagrid
$this->page = Load::model('cliente')->paginate('per_page: 20', "page: $page");
/* paso un array con los campos que quiero mostrar en la datagrid
* El key de cada campo del ser el nombre a mostrarse en el tr de la tabla
* El value el campo de la tabla
*/
$this->campos = array('Codigo' => 'id',
'Nombre' => 'nombre',
'Telefono' => 'telefono',
'Direccion' => 'direccion');
// Nombre del Partial de paginado que utiliza KumbiaPHP
$this->paginator = 'extended';
/// Url que utilizara el Paginado de kumbia, por defecto utiliza la accion page
$this->url = null ;
}
}
// Se maneja todo desde la vista
Mas Informacion referida a los Partial de Paginación disponibles en KumbiaPHP
En la vista
/app/view/cliente/page.phtml
<? View::partial('datagrid/paginado', false,array('Model'=>$page, 'Campos'=>$campos, 'Paginator'=>$paginator, 'Url'=>$url )) ?>
Partials
/app/view/partials/datagrid/paginado.phtml
<?php
/**
* Renderiza una tabla en base a un modelo.
*
* @author Andres Hal
*
* @param array $Modelo modelo con los resultados a mostrar
* @param array $Campos array con los que se quieren mostrar de la tabla
* @return partial
*/
?>
<div id="datagrid">
<table border="1px" width="100%" class="paginado">
<thead><tr>
<?php foreach( $Campos as $titulo => $valor): ?>
<th> <?php echo $titulo ?></th>
<?php endforeach; ?>
</tr></thead>
<tbody>
<? foreach( $Model->items as $model):
echo tr_color_class( 'tr_primary', 'tr_secondary' );
foreach($Campos as $campos): ?>
<td><?php echo $model->$campos ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody></table>
<?php View::partial('paginators/'. $Paginator, false, array('page' => $Model ,'url' => $Url)); ?>
</div>