Diferencia entre revisiones de «Datagrid Simple Con Paginado»
De KumbiaPHP Framework Wiki
(No se muestran 17 ediciones intermedias de 3 usuarios) | |||
Línea 1: | Línea 1: | ||
− | Partials para crear de forma simple con paginado | + | [[KumbiaPHP_Framework_Versión_1.0_Spirit#views.2Fpartials.2F |Partials]] para crear de forma simple un datagrid con paginado |
=== En el controlador === | === En el controlador === | ||
+ | Para efecto del ejemplo tenemos el siguiente controller, pero puede ser cualquiera | ||
+ | <source lang="php"> | ||
+ | <?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 | ||
</source> | </source> | ||
+ | Mas Informacion referida a los [[KumbiaPHP_Framework_Versión_1.0_Spirit#Vistas_de_Paginaci.C3.B3n |Partial de Paginación]] disponibles en [http://www.kumbiaphp.com KumbiaPHP] | ||
=== En la vista === | === En la vista === | ||
− | + | /app/view/cliente/page.phtml | |
<source lang="php"> | <source lang="php"> | ||
− | + | <? View::partial('datagrid/paginado', false,array('Model'=>$page, 'Campos'=>$campos, 'Paginator'=>$paginator, 'Url'=>$url )) ?> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
Línea 28: | Línea 43: | ||
<source lang="php"> | <source lang="php"> | ||
− | + | <?php | |
− | + | /** | |
− | + | * Renderiza una tabla en base a un modelo. | |
− | + | * | |
− | foreach( $Campos as $titulo => $valor): | + | * @author Andres Hal |
− | + | * | |
− | endforeach; | + | * @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' ); | echo tr_color_class( 'tr_primary', 'tr_secondary' ); | ||
− | foreach($Campos as $campos): | + | foreach($Campos as $campos): ?> |
− | + | <td><?php echo $model->$campos ?></td> | |
− | + | <?php endforeach; ?> | |
− | + | </tr> | |
− | endforeach; | + | <?php endforeach; ?> |
− | + | </tbody></table> | |
− | + | <?php View::partial('paginators/'. $Paginator, false, array('page' => $Model ,'url' => $Url)); ?> | |
− | + | </div> | |
− | + | ||
− | |||
− | |||
− | |||
</source> | </source> | ||
+ | == Resultado Final == | ||
+ | |||
+ | [[Archivo:Datagrid_simple_con_paginado.JPG|800px|thumb|center|Resultado Final]] | ||
+ | |||
+ | [[Categoría:Views]] | ||
[[Categoría:Partials]] | [[Categoría:Partials]] |
Revisión actual del 13:46 7 oct 2009
Partials para crear de forma simple un datagrid con paginado
En el controlador[editar]
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[editar]
/app/view/cliente/page.phtml
<? View::partial('datagrid/paginado', false,array('Model'=>$page, 'Campos'=>$campos, 'Paginator'=>$paginator, 'Url'=>$url )) ?>
Partials[editar]
/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>