TigerZF
🌐Español

11.4. Poniéndolo todo junto

Ha visto cómo crear un objeto Paginator, cómo renderizar los elementos de la página actual, y cómo renderizar un elemento de navegación para recorrer sus páginas. En esta sección verá cómo Paginator encaja con el resto de su aplicación MVC.

En los siguientes ejemplos ignoraremos la implementación de buenas prácticas de usar una capa de servicio (Service Layer) para mantener el ejemplo simple y más fácil de entender. Una vez que se familiarice con el uso de capas de servicio, debería ser fácil ver cómo Paginator puede encajar con el enfoque de buenas prácticas.

Comencemos con el controlador. La aplicación de ejemplo es simple, y simplemente pondremos todo en el IndexController y la IndexAction. Nuevamente, esto es solo con fines de demostración. Una aplicación real no debería usar controladores de esta manera.

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        // Setup pagination control view script. See the pagation control tutorial page
        // for more information about this view script.
        Zend_View_Helper_PaginationControl::setDefaultViewPartial('controls.phtml');

        // Fetch an already instantiated database connection from the registry
        $db = Zend_Registry::get('db');

        // Create a select object which fetches blog posts, sorted decending by date of creation
        $select = $db->select()->from('posts')->sort('date_created DESC');

        // Create a Paginator for the blog posts query
        $paginator = Zend_Paginator::factory($select);

        // Read the current page number from the request. Default to 1 if no explicit page number is provided.
        $paginator->setCurrentPageNumber($this->_getParam('page', 1));

        // Assign the Paginator object to the view
        $this->view->paginator = $paginator;
    }
}

El siguiente script de vista es el script de vista index.phtml para la indexAction del IndexController. El script de vista puede mantenerse simple. Estamos asumiendo el uso del ScrollingStyle por defecto.

<ul>
<?php
// Render each the title of each post for the current page in a list-item
foreach ($this->paginator as $item) {
    echo '<li>' . $item->title . '</li>';
}
?>
</ul>
<?php echo $this->paginator; ?>

Ahora navegue al índice de su proyecto y vea a Paginator en acción. Lo que hemos discutido en este tutorial es solo la punta del iceberg. El manual de referencia y la documentación de la API pueden decirle más sobre lo que puede hacer con Zend_Paginator.