【问题标题】:drupal 8 pagination is not working for select querydrupal 8分页不适用于选择查询
【发布时间】:2021-04-01 03:37:53
【问题描述】:

我有一个 drupal 8 选择查询,它返回项目列表,我想给它添加分页,但是分页器进入节点但它没有正确分页它显示所有结果,这是我的代码

    $sql = "SELECT nid FROM node WHERE type='used_item'";
        $item_nids= \Drupal::database()->query($sql)
                    ->fetchAllAssoc('nid');
        $total=count($item_nids);
       $num_per_page='12';
    
        $pager = \Drupal::service('pager.manager')
          ->createPager($total, $num_per_page);
        $page = $pager
          ->getCurrentPage();
        
       
        // Load the item nodes from the list array.
        $item_nodes = Node::loadMultiple(array_keys($item_nids));
        // Build the items.
        $item_build = \Drupal::entityTypeManager()->getViewBuilder('node')- 
 >viewMultiple($item_nodes, 'carousel_card');
    
        $build[] = [
          '#theme' => 'full_list',
          '#name' => $name,
          '#description' => $description,
          '#item_cards' => $item_build,
        ];
        $build[] = [
          '#type' => 'pager',
        ];
        return $build;

如果我做错了什么,请告诉我。

【问题讨论】:

    标签: php pagination drupal-8


    【解决方案1】:

    始终关注 Drupal 核心,以获取有关如何使用 API 的更好示例。这里有两个例子可能会有所帮助;

    https://api.drupal.org/api/drupal/core!modules!tracker!tracker.pages.inc/function/tracker_page/8.6.x

    https://api.drupal.org/api/drupal/core!modules!dblog!src!Controller!DbLogController.php/function/DbLogController::topLogMessages/8.6.x

    您缺少的最明显的事情之一是您没有扩展寻呼机,因此它无法更改您的查询。

    $query = db_select('node', 'n')
      ->extend('Drupal\\Core\\Database\\Query\\PagerSelectExtender')
      ->fields('n', ['nid'])
      ->condition('n.type', 'used_item')
      ->id());
    

    这就是它如何应用“范围”进行分页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-11
      • 2021-04-01
      • 2021-06-21
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      相关资源
      最近更新 更多