Diferencia entre revisiones de «Paginadores Múltiples en una acción»
(No se muestran 4 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
Si queremos tener dos o más paginares en una sola acción, por ejemplo: Queremos mostrar en este caso dos lista paginadas, una de artículos y otra de artículos votados - estos votos fueron hechos con anterioridad, con el fin de saber los artículos que a las personas les gusten más. | Si queremos tener dos o más paginares en una sola acción, por ejemplo: Queremos mostrar en este caso dos lista paginadas, una de artículos y otra de artículos votados - estos votos fueron hechos con anterioridad, con el fin de saber los artículos que a las personas les gusten más. | ||
− | + | En este caso lo muestro en el IndexController que es el controllador por defecto de KumbiaPHP | |
<source lang="php"> | <source lang="php"> | ||
− | + | <?php | |
class IndexController extends AppController | class IndexController extends AppController | ||
{ | { | ||
Línea 18: | Línea 18: | ||
El primer parámetro para Lista de Articulos y el Segundo para Lista de Votados, esto hará que los paginadores sean independientes uno del otro. Con esto Evitaremos que al darle click a "next" de un paginador, el otro paginador tambien cambie de página.</p> | El primer parámetro para Lista de Articulos y el Segundo para Lista de Votados, esto hará que los paginadores sean independientes uno del otro. Con esto Evitaremos que al darle click a "next" de un paginador, el otro paginador tambien cambie de página.</p> | ||
− | + | == La Vista == | |
− | < | + | <source lang="php"> |
− | + | <b>Lista de Articulos</b> | |
− | |||
<?php if($listaArticulos->prev) echo Html::linkAction("index/$listaArticulos->prev/$listaVotados->current", '<< Anterior |'); ?> | <?php if($listaArticulos->prev) echo Html::linkAction("index/$listaArticulos->prev/$listaVotados->current", '<< Anterior |'); ?> | ||
Línea 29: | Línea 28: | ||
<b>Articulos Mas Votados</b> | <b>Articulos Mas Votados</b> | ||
<?php if($listaVotados->prev) echo Html::linkAction("index/$listaArticulos->current/$listaVotados->prev", '<< Anterior |'); ?> | <?php if($listaVotados->prev) echo Html::linkAction("index/$listaArticulos->current/$listaVotados->prev", '<< Anterior |'); ?> | ||
− | <?php if($listaVotados->next) echo Html::linkAction("index/$listaArticulos->current/$listaVotados->next", '| Proximo >>'); ?> | + | <?php if($listaVotados->next) echo Html::linkAction("index/$listaArticulos->current/$listaVotados->next", '| Proximo >>'); ?></source> |
− | + | ||
− | |||
<p>Si nos damos cuenta la clase paginate del core/libs/kumbia_active_record/behaviors/paginate.php</p> | <p>Si nos damos cuenta la clase paginate del core/libs/kumbia_active_record/behaviors/paginate.php</p> | ||
<p>Aquí tenemos estos Atributos de la clase que nos permitirán saber las páginas de nuestro paginador | <p>Aquí tenemos estos Atributos de la clase que nos permitirán saber las páginas de nuestro paginador | ||
Línea 49: | Línea 47: | ||
</p> | </p> | ||
− | + | == El modelo == | |
− | + | <source lang="php"> | |
− | |||
− | |||
<?php | <?php | ||
class Articulos extends ActiveRecord { | class Articulos extends ActiveRecord { | ||
Línea 65: | Línea 61: | ||
} | } | ||
?> | ?> | ||
− | + | </source> | |
− |
Revisión actual del 16:53 17 mar 2013
Si queremos tener dos o más paginares en una sola acción, por ejemplo: Queremos mostrar en este caso dos lista paginadas, una de artículos y otra de artículos votados - estos votos fueron hechos con anterioridad, con el fin de saber los artículos que a las personas les gusten más. En este caso lo muestro en el IndexController que es el controllador por defecto de KumbiaPHP
<?php
class IndexController extends AppController
{
public function index($page=1,$pag=1){
$articulos = new Articulos();
$this->listaArticulos = $articulos->getMenus($page);
$this->listaVotados = $articulos->numeroVotos($pag);
}
}
?>
Si se dan cuenta el Controller, recibe dos parámetros, que son las páginas que mostrará cada lista... El primer parámetro para Lista de Articulos y el Segundo para Lista de Votados, esto hará que los paginadores sean independientes uno del otro. Con esto Evitaremos que al darle click a "next" de un paginador, el otro paginador tambien cambie de página.
La Vista[editar]
<b>Lista de Articulos</b>
<?php if($listaArticulos->prev) echo Html::linkAction("index/$listaArticulos->prev/$listaVotados->current", '<< Anterior |'); ?>
<?php if($listaArticulos->next) echo Html::linkAction("index/$listaArticulos->next/$listaVotados->current", '| Proximo >>'); ?><br>
<b>Articulos Mas Votados</b>
<?php if($listaVotados->prev) echo Html::linkAction("index/$listaArticulos->current/$listaVotados->prev", '<< Anterior |'); ?>
<?php if($listaVotados->next) echo Html::linkAction("index/$listaArticulos->current/$listaVotados->next", '| Proximo >>'); ?>
Si nos damos cuenta la clase paginate del core/libs/kumbia_active_record/behaviors/paginate.php
Aquí tenemos estos Atributos de la clase que nos permitirán saber las páginas de nuestro paginador
//Atributo->next : página siguiente
$page->next = ($start + $per_page) < $n ? ($page_number + 1) : false;
//Atributo->prev :página Anterior
$page->prev = ($page_number > 1) ? ($page_number - 1) : false;
//Atributo->current :página Actual
$page->current = $page_number;
//Atributo->total : Es el total de páginas que tendrá nuestro paginador a recorrer
$page->total = ceil($n / $per_page);
//Atributo->Count: total de registros a paginar
$page->count = $n;
//Atributo->per_page :Límite de páginas a mostrar, normalmente se usa en el modelo
$page->per_page = $per_page;
El modelo[editar]
<?php
class Articulos extends ActiveRecord {
// $ppage define el numero de registros que se veran antes que aparezca los link de paginacion
//en este caso, quiero que se muestren 13 filas de mi base de datos.. Esto es depende del
public function getMenus($page, $ppage=13)
{
return $this->paginate("page: $page", "per_page: $ppage", 'order: id desc');
}
public function numeroVotos($page, $ppage=13){
return $this->paginate("page: $page", "per_page: $ppage", 'order: votos desc');
}
?>