2011-08-03 8 views
5

He estado probando Twig, y funciona bien para mi sitio pequeño.Paginación con ramita

Este fue el tutorial utilizado:

http://devzone.zend.com/article/13633

Sin embargo, he tenido una mirada en línea y no se puede encontrar nada que ver paginación.

Este es mi código:

<html> 
    <head> 
    <style type="text/css"> 
     table { 
     border-collapse: collapse; 
     }   
     tr.heading {  
     font-weight: bolder; 
     }   
     td { 
     border: 0.5px solid black; 
     padding: 0 0.5em; 
     }  
    </style> 
    </head> 
    <body> 
    <h2>Automobiles</h2> 
    <table> 
     <tr class="heading"> 
     <td>Vehicle</td> 
     <td>Model</td> 
     <td>Price</td> 
     </tr> 
     {% for d in data %} 
     <tr> 
     <td>{{ d.manufacturer|escape }}</td> 
     <td>{{ d.model|escape }}</td> 
     <td>{{ d.price|raw }}</td> 
     </tr> 
     {% endfor %} 
    </table> 
    </body> 
</html> 

y esta es la codificación PHP para ello:

<?php 
// include and register Twig auto-loader 
include 'Twig/Autoloader.php'; 
Twig_Autoloader::register(); 

// attempt a connection 
try { 
    $dbh = new PDO('mysql:dbname=world;host=localhost', 'root', 'mypass'); 
} catch (PDOException $e) { 
    echo "Error: Could not connect. " . $e->getMessage(); 
} 

// set error mode 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

// attempt some queries 
try { 
    // execute SELECT query 
    // store each row as an object 
    $sql = "SELECT manufacturer, model, price FROM automobiles"; 
    $sth = $dbh->query($sql); 
    while ($row = $sth->fetchObject()) { 
    $data[] = $row; 
    } 

    // close connection, clean up 
    unset($dbh); 

    // define template directory location 
    $loader = new Twig_Loader_Filesystem('templates'); 

    // initialize Twig environment 
    $twig = new Twig_Environment($loader); 

    // load template 
    $template = $twig->loadTemplate('automobiles.tpl'); 

    // set template variables 
    // render template 
    echo $template->render(array (
    'data' => $data 
)); 

} catch (Exception $e) { 
    die ('ERROR: ' . $e->getMessage()); 
} 
?> 

¿Qué necesitaría hacer para conseguir los resultados paginados dentro de la ramita? De lo contrario, mi sitio funciona perfectamente bien!

gracias, JC

Respuesta

2

Desde la ramita es sólo un motor de plantillas, no hay nada incluido (al menos en el núcleo) para agregar la paginación. Tienes que dividir el contenido por ti mismo y paginarlo (por ejemplo, usando JavaScript). Tenga en cuenta que con su implementación actual, el contenido completo se inserta en la plantilla y usted solo ocultaría/mostraría algunas partes.

La forma preferida, sin embargo, sería incluir la paginación también en su modelo (la parte donde realiza su consulta) para cargar solo estos registros, que actualmente se muestran al usuario. Esto obviamente está fuera del alcance de un motor de plantillas.

5

Ya hay ejemplos en Internet. Puede hacer referencia a

https://gist.github.com/SimonSimCity/4594748

+0

@XFS: Por favor, tenga en cuenta que estos son sólo ejemplos para mostrar la página en el navegador. La lógica del límite y el desplazamiento de la página es algo de lo que todavía debe ocuparse. Aún deberá ajustar su modelo, controlador, etc., tal como lo hace apfelbox. – SimonSimCity

+0

Accediendo a la página dada devuelve un 403 por ahora .. – Benjamin

+0

Acabo de actualizar la respuesta. – Capitaine