【问题标题】:The same data on all pages of pager寻呼机所有页面上的相同数据
【发布时间】:2019-08-07 13:42:14
【问题描述】:

我在自定义模块中编写了分页,但分页器在其所有页面上显示相同的数据。我的查询有 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;
  }

【问题讨论】:

标签: drupal pagination twig drupal-8


【解决方案1】:

你犯了一个小错误,你总是 ::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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多