Diferencia entre revisiones de «Paginadores Múltiples en una acción»

De KumbiaPHP Framework Wiki
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>
  
<h2>Ahora verémos la vista</h2>
+
=== La Vista ===
  
 
<source lang="php">
 
<source lang="php">
Línea 48: Línea 48:
 
</p>
 
</p>
  
<h2>Para terminar, mostraré el modelo a realizar</h2>
+
=== El modelo ===
 
<source lang="php">
 
<source lang="php">
 
<?php  
 
<?php  

Revisión del 16:03 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

     <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 >>'); ?>

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

		<?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');
    }
	 ?>