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;
}