pager所有页面上的相同数据
The same data on all pages of pager
我在自定义模块中编写了分页,但分页器在其所有页面上显示相同的数据。我的查询有 4 个元素。我想每页显示 2 个元素。我使用 range(0,4)
,它在每一页上都显示了所有 4 个元素,我尝试了很多 range()
的组合。如何每页显示 2 个元素?请帮忙 :) 我的代码:
public function news() {
$query = $this->entityTypeManager
->getListBuilder('node')
->getStorage()
->getQuery();
$query->condition('type', 'aktualnosc');
$query->condition('status', 1);
$result = $query->range(0, 4)->execute();
$nodes = $this->entityTypeManager->getStorage('node')->loadMultiple($result);
pager_default_initialize(count($result), 2);
$render = [];
$render[] = [
'#theme' => 'news',
'#results' => $nodes,
'#type' => 'remote'
];
$render[] = [
'#type' => 'pager',
'#quantity' => 2
];
return $render;
}
你犯了一个小错误,你总是 ::range()
从 0 到 4 个元素。相反,您应该改用 ::pager()
方法。
这里的功能与您的相同,但使用 pager
而不是 range
。
public function news() {
$query = $this->entityTypeManager
->getListBuilder('node')
->getStorage()
->getQuery();
$query->condition('type', 'aktualnosc');
$query->condition('status', 1);
// Get all the aktualnosc nodes to initialize our pager.
$nids = $query->execute();
pager_default_initialize(count($nids), 2);
$query->pager($limit);
// Fetch nodes based on our pager.
$nids = $query->execute();
$nodes = $this->entityTypeManager->getStorage('node')->loadMultiple($nids);
$render = [];
$render[] = [
'#theme' => 'news',
'#results' => $nodes,
'#type' => 'remote'
];
$render[] = [
'#type' => 'pager',
'#quantity' => 2
];
return $render;
}
我在自定义模块中编写了分页,但分页器在其所有页面上显示相同的数据。我的查询有 4 个元素。我想每页显示 2 个元素。我使用 range(0,4)
,它在每一页上都显示了所有 4 个元素,我尝试了很多 range()
的组合。如何每页显示 2 个元素?请帮忙 :) 我的代码:
public function news() {
$query = $this->entityTypeManager
->getListBuilder('node')
->getStorage()
->getQuery();
$query->condition('type', 'aktualnosc');
$query->condition('status', 1);
$result = $query->range(0, 4)->execute();
$nodes = $this->entityTypeManager->getStorage('node')->loadMultiple($result);
pager_default_initialize(count($result), 2);
$render = [];
$render[] = [
'#theme' => 'news',
'#results' => $nodes,
'#type' => 'remote'
];
$render[] = [
'#type' => 'pager',
'#quantity' => 2
];
return $render;
}
你犯了一个小错误,你总是 ::range()
从 0 到 4 个元素。相反,您应该改用 ::pager()
方法。
这里的功能与您的相同,但使用 pager
而不是 range
。
public function news() {
$query = $this->entityTypeManager
->getListBuilder('node')
->getStorage()
->getQuery();
$query->condition('type', 'aktualnosc');
$query->condition('status', 1);
// Get all the aktualnosc nodes to initialize our pager.
$nids = $query->execute();
pager_default_initialize(count($nids), 2);
$query->pager($limit);
// Fetch nodes based on our pager.
$nids = $query->execute();
$nodes = $this->entityTypeManager->getStorage('node')->loadMultiple($nids);
$render = [];
$render[] = [
'#theme' => 'news',
'#results' => $nodes,
'#type' => 'remote'
];
$render[] = [
'#type' => 'pager',
'#quantity' => 2
];
return $render;
}