Same filename and directory in other branches
- 8.9.x core/modules/system/tests/modules/pager_test/src/Controller/PagerTestController.php
- 9 core/modules/system/tests/modules/pager_test/src/Controller/PagerTestController.php
Namespace
Drupal\pager_test\Controller
File
core/modules/system/tests/modules/pager_test/src/Controller/PagerTestController.php
View source
<?php
namespace Drupal\pager_test\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Database\Database;
use Drupal\Core\Database\Query\PagerSelectExtender;
use Drupal\Core\Pager\PagerParametersInterface;
use Drupal\Core\Security\TrustedCallbackInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class PagerTestController extends ControllerBase implements TrustedCallbackInterface {
protected $pagerParams;
public static function create(ContainerInterface $container) {
return new static($container
->get('pager.parameters'));
}
public function __construct(PagerParametersInterface $pager_params) {
$this->pagerParams = $pager_params;
}
protected function buildTestTable($element, $limit) {
$header = [
[
'data' => 'wid',
],
[
'data' => 'type',
],
[
'data' => 'timestamp',
],
];
$query = Database::getConnection()
->select('watchdog', 'd')
->extend(PagerSelectExtender::class)
->element($element);
$result = $query
->fields('d', [
'wid',
'type',
'timestamp',
])
->limit($limit)
->orderBy('d.wid')
->execute();
$rows = [];
foreach ($result as $row) {
$rows[] = [
'data' => (array) $row,
];
}
return [
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => $this
->t("There are no watchdog records found in the db"),
];
}
public function queryParameters() {
$build['pager_table_0'] = $this
->buildTestTable(0, 5);
$query_params = $this->pagerParams
->getQueryParameters();
$pager_calls = isset($query_params['pager_calls']) ? $query_params['pager_calls'] ? $query_params['pager_calls'] : 0 : 0;
$build['l_pager_pager_0'] = [
'#markup' => $this
->t('Pager calls: @pager_calls', [
'@pager_calls' => $pager_calls,
]),
];
$build['pager_pager_0'] = [
'#type' => 'pager',
'#element' => 0,
'#parameters' => [
'pager_calls' => ++$pager_calls,
],
'#pre_render' => [
'Drupal\\pager_test\\Controller\\PagerTestController::showPagerCacheContext',
],
];
return $build;
}
public function multiplePagers() {
$build['pager_table_0'] = $this
->buildTestTable(0, 20);
$build['pager_pager_0'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'test-pager-0',
],
],
'pager' => [
'#type' => 'pager',
'#element' => 0,
],
];
$build['pager_table_1'] = $this
->buildTestTable(1, 20);
$build['pager_pager_1'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'test-pager-1',
],
],
'pager' => [
'#type' => 'pager',
'#element' => 1,
],
];
$build['pager_table_4'] = $this
->buildTestTable(4, 20);
$build['pager_pager_4'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'test-pager-4',
],
],
'pager' => [
'#type' => 'pager',
'#element' => 4,
],
];
return $build;
}
public static function showPagerCacheContext(array $pager) {
\Drupal::messenger()
->addStatus(\Drupal::service('cache_contexts_manager')
->convertTokensToKeys([
'url.query_args.pagers:' . $pager['#element'],
])
->getKeys()[0]);
return $pager;
}
public static function trustedCallbacks() {
return [
'showPagerCacheContext',
];
}
}
Classes