Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 15 |
Pager | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
6 | |
0.00% |
0 / 15 |
getInfo | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 12 |
|||
preRenderPager | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Render\Element\Pager. | |
*/ | |
namespace Drupal\Core\Render\Element; | |
use Drupal\Core\Render\Element; | |
/** | |
* Provides a render element for a pager. | |
* | |
* The pager must be initialized with a call to pager_default_initialize() in | |
* order to render properly. When used with database queries, this is performed | |
* for you when you extend a select query with | |
* \Drupal\Core\Database\Query\PagerSelectExtender. | |
* | |
* Properties: | |
* - #element: (optional, int) The pager ID, to distinguish between multiple | |
* pagers on the same page (defaults to 0). | |
* - #parameters: (optional) An associative array of query string parameters to | |
* append to the pager. | |
* - #quantity: The maximum number of numbered page links to create (defaults | |
* to 9). | |
* - #tags: (optional) An array of labels for the controls in the pages. | |
* - #route_name: (optional) The name of the route to be used to build pager | |
* links. Defaults to '<none>', which will make links relative to the current | |
* URL. This makes the page more effectively cacheable. | |
* | |
* @code | |
* $build['pager'] = [ | |
* '#type' => 'pager', | |
* ]; | |
* @endcode | |
* | |
* @RenderElement("pager") | |
*/ | |
class Pager extends RenderElement{ | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getInfo() { | |
return [ | |
'#pre_render' => [ | |
get_class($this) . '::preRenderPager', | |
], | |
'#theme' => 'pager', | |
// The pager ID, to distinguish between multiple pagers on the same page. | |
'#element' => 0, | |
// An associative array of query string parameters to append to the pager | |
// links. | |
'#parameters' => [], | |
// The number of pages in the list. | |
'#quantity' => 9, | |
// An array of labels for the controls in the pager. | |
'#tags' => [], | |
// The name of the route to be used to build pager links. By default no | |
// path is provided, which will make links relative to the current URL. | |
// This makes the page more effectively cacheable. | |
'#route_name' => '<none>', | |
]; | |
} | |
/** | |
* #pre_render callback to associate the appropriate cache context. | |
* | |
* | |
* @param array $pager | |
* A renderable array of #type => pager. | |
* | |
* @return array | |
*/ | |
public static function preRenderPager(array $pager) { | |
// Note: the default pager theme process function | |
// template_preprocess_pager() also calls pager_query_add_page(), which | |
// maintains the existing query string. Therefore | |
// template_preprocess_pager() adds the 'url.query_args' cache context, | |
// which causes the more specific cache context below to be optimized away. | |
// In other themes, however, that may not be the case. | |
$pager['#cache']['contexts'][] = 'url.query_args.pagers:' . $pager['#element']; | |
return $pager; | |
} | |
} |