function listing($locator) { $usersession = $locator->get('UserSession'); $db = $locator->get('Db'); $template = $this->_load('controller')->template('listing'); // create a data object that has the interface needed by the Pager object $datasource = new A_Pagination_Adapter_Db($db, "SELECT * FROM `blog_posts` WHERE post_type='post'"); // create a request processor to set pager from GET parameters $pager = new A_Pagination_Request($datasource); // initialize using values from $_GET $pager->process($locator->get('Request')); // create a "standard" view object to create pagination links $view = new A_Pagination_View_Standard($pager); $rows = $pager->getItems(); $template->set('rows', $rows); $template->set('links', $view->render()); // display the pagination links $this->response->set('maincontent', $template->render()); }
<head> <title>Skeleton - Pagination example - basic</title> </head> <body> <?php include 'config.php'; include dirname(__FILE__) . '/../../A/autoload.php'; // initialize an array for testing for ($i = 0; $i <= 750; ++$i) { $myarray[$i]['title'] = 'This is row ' . $i; $myarray[$i]['month'] = date('F', time() + $i * 60 * 60 * 24 * 30); } // create a data object that has the interface needed by the Pager object $datasource = new Datasource($myarray); // create a request processor to set pager from GET parameters $pager = new A_Pagination_Request($datasource); $pager->setRangeSize(3)->process(); #include 'A/Pagination/View/Standard.php'; $view1 = new A_Pagination_View_Standard($pager); $view2 = new A_Pagination_View_Standard($pager); $view2->alwaysShowFirstLast(); $view3 = new A_Pagination_View_Standard($pager); $view3->alwaysShowPreviousNext(); $view4 = new A_Pagination_View_Standard($pager, false, true); $view4->alwaysShowFirstLast(); $view4->alwaysShowPreviousNext(); ?> <h3>Standard</h3> <pre>$view = new A_Pagination_View_Standard($pager);</pre> <div><?php
<title>Skeleton - Pagination example - basic</title> </head> <body> <?php include 'config.php'; include dirname(__FILE__) . '/../../A/autoload.php'; // initialize an array for testing for ($i = 0; $i <= 750; ++$i) { $myarray[$i]['title'] = 'This is row ' . $i; $myarray[$i]['month'] = date('F', time() + $i * 60 * 60 * 24 * 30); } #$myarray = null; // create a data object that has the interface needed by the Pager object $datasource = new Datasource($myarray); // create a request processor to set pager from GET parameters $pager = new A_Pagination_Request($datasource); // set range (number of links on either side of current page) and process core based on request $pager->setRangeSize(3)->process(); // create a new link helper $link = new A_Pagination_Helper_Link($pager); // create a new order link helper $order = new A_Pagination_Helper_Order($pager, $url, array('' => 'Row', 'title' => 'Title', 'month' => 'Month')); // retrieve items on current page $rows = $pager->getItems(); // display the paging links ... should this go in a template? $links = ''; $links .= $link->first('First'); $links .= $link->previous('Previous'); $links .= $link->range(); $links .= $link->next('Next'); $links .= $link->last('Last');
<html> <head> <title>Skeleton - Pagination example - Standard Request</title> </head> <body> <?php include 'config.php'; include dirname(__FILE__) . '/../../A/autoload.php'; // create a data object that has the interface needed by the Pager object $datasource = new A_Pagination_Adapter_File('constitution.txt'); // create a request processor to set pager from GET parameters $pager = new A_Pagination_Request($datasource); // set core values based on request $pager->process(); // create a new standard view $view = new A_Pagination_View_Standard($pager); // retrieve items on current page $rows = $pager->getItems(); // Set up view internally. For first/last, label is optional. If no label is passed, the number will be displayed. $view->first('First')->previous('Previous')->range()->next('Next')->last('Last'); // display the data echo "<div>{$view->render()}</div>"; echo '<table border="1">'; $n = 1; foreach ($rows as $value) { echo '<tr>'; echo '<td>' . $n++ . '.</td><td>' . $value['line'] . '</td>'; echo '</tr>'; } echo '</table>'; echo "<div>{$view->render()}</div>";
<body> <?php include 'config.php'; include dirname(__FILE__) . '/../../A/autoload.php'; // initialize an array for testing for ($i = 0; $i <= 750; ++$i) { $myarray[$i]['title'] = 'This is row ' . $i; $myarray[$i]['month'] = date('F', time() + $i * 60 * 60 * 24 * 30); } #$myarray = null; // create a data object that has the interface needed by the Pager object $datasource = new Datasource($myarray); // use a request object $request = new A_Http_Request(); // create a request processor to set pager from GET parameters $pager = new A_Pagination_Request($datasource); $pager->setRangeSize(3)->process($request); $url = new A_Pagination_Helper_Url(); $url->set('page', $pager->getCurrentPage()); $url->set('order_by', $pager->getOrderBy()); $rows = $pager->getItems(); // display the paging links ... should this goes in a template? $links = array(); if ($pager->isPage(-1)) { $links[] = "<a href=\"" . $url->render(false, array('page' => $pager->getPage(-1))) . "\">Previous</a>"; } if (!$pager->inPageRange($pager->getFirstPage())) { $links[] = "<a href=\"" . $url->render(false, array('page' => $pager->getFirstPage())) . "\">1</a> ... "; } //if ($pager->isIntervalPage(-10)) $links[] = "<a href=\"" . $url->render(false, array ('page' => $pager->getPage(-10))) . "\">" . $pager->getPage(-10) . "</a> ..."; foreach ($pager->getPageRange() as $page) {
<head> <title>Skeleton - Pagination example - Standard Request</title> </head> <body> <?php include 'config.php'; include dirname(__FILE__) . '/../../A/autoload.php'; // initialize an array for testing for ($i = 0; $i <= 750; ++$i) { $myarray[$i]['title'] = 'This is row ' . $i; $myarray[$i]['month'] = date('F', time() + $i * 60 * 60 * 24 * 30); } // create a data object that has the interface needed by the Pager object $datasource = new Datasource($myarray); // create a request processor to set pager from GET parameters $pager = new A_Pagination_Request($datasource); $pager->setParamNamespace('green_'); // set range (number of links on either side of current page) and process core based on request $pager->setRangeSize(3)->process(); // create a new standard view $view = new A_Pagination_View_Standard($pager); // retrieve items on current page $rows = $pager->getItems(); // Set up view internally. For first/last, label is optional. If no label is passed, the number will be displayed. $view->first('First')->previous('Previous')->range()->next('Next')->last('Last'); // display the data echo "<div>{$view->render()}</div>"; echo '<table border="1">'; echo '<tr><th>' . $view->link()->order('', 'Row') . '</th><th>' . $view->link()->order('title', 'Title') . '</th><th>' . $view->link()->order('month', 'Month') . '</th></tr>'; $n = 1; foreach ($rows as $value) {