Datagrid Simple Con Paginado
De KumbiaPHP Framework Wiki
Partials para crear de forma simple un datagrid con paginado
Contenido |
[editar] 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
[editar] En la vista
/app/view/cliente/page.phtml
<? View::partial('datagrid/paginado', false,array('Model'=>$page, 'Campos'=>$campos, 'Paginator'=>$paginator, 'Url'=>$url )) ?>
[editar] 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>