Edición de «Paginadores»

De KumbiaPHP Framework Wiki

Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 154: Línea 154:
 
<?php if($page->next) echo ' | ' . link_to('usuario/lista/next', 'Siguiente') ?>
 
<?php if($page->next) echo ' | ' . link_to('usuario/lista/next', 'Siguiente') ?>
 
</source>
 
</source>
 +
 +
<h1>Paginadores Múltiples en una acción</h1>
 +
<p>Si queremos tener dos o más paginares en una sola acción:</p>
 +
<p>Ejemplo:</p>
 +
<p>Querémos 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 mas - </p>
 +
<p>En este caso lo muestro en el IndexController que es el controllador por defecto de KumbiaPhp</p>
 +
<code>
 +
<pre>
 +
<?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); 
 +
}
 +
 +
}
 +
?>
 +
</pre>
 +
</code>
 +
<p>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.</p>
 +
 +
<h2>Ahora verémos la vista</h2>
 +
 +
<code>
 +
 +
    <pre> <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 >>'); ?><br>
 +
    </pre>
 +
</code>
 +
<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
 +
<br>
 +
//Atributo->next : página siguiente
 +
$page->next = ($start + $per_page) < $n ? ($page_number + 1) : false;<br/>
 +
//Atributo->prev :página Anterior
 +
        $page->prev = ($page_number > 1) ? ($page_number - 1) : false;<br/>
 +
    //Atributo->current :página Actual
 +
        $page->current = $page_number;<br/>
 +
    //Atributo->total : Es el total de páginas que tendrá nuestro paginador a recorrer
 +
        $page->total = ceil($n / $per_page);<br/>
 +
    //Atributo->Count: total de registros a paginar
 +
        $page->count = $n;<br/>
 +
    //Atributo->per_page :Límite de páginas a mostrar, normalmente se usa en el modelo
 +
        $page->per_page = $per_page;<br/>
 +
</p>
 +
 +
<h2>Para terminar, mostraré el modelo a realizar</h2>
 +
<code>
 +
 +
<pre>
 +
<?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');
 +
    }
 +
?>
 +
</pre>
 +
</code>

Ten en cuenta que todas las contribuciones a KumbiaPHP Framework Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Proyecto:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)