【问题标题】:How to get total rows in Drupal 8 view with pagination?如何通过分页获取 Drupal 8 视图中的总行数?
【发布时间】:2020-02-18 14:12:19
【问题描述】:

在 Drupal 8 中,我使用分页视图。每页有 10 个项目。

在 hook_views_pre_render(ViewExecutable $view) {..} 我想获取要在另一个函数中使用的项目数。但是,由于寻呼机设置,$result = 10 和 $total_rows = 10。实际项目编号在 500 到 2000 之间。 作为一种解决方法,我尝试了一个临时视图。

$view2 = Views::getView('my_view');
$view2->setDisplay('page_1');
$view2->setItemsPerPage(15000);
$view2->execute();

这行得通。 view2->total_rows 返回所需的值。但我不想在 setItemsPerPage 中使用固定值。 0 或 null(对于每页无限项)不返回 total_rows 的结果。

我可以做些什么来获得正确数量的视图项?

【问题讨论】:

    标签: drupal view


    【解决方案1】:

    在您的 hook_views_pre_render 函数中,您可以执行视图(即使使用分页器设置)并获取总行数/结果,而不是调用 view->SetDisplay 和 view->setItemsPerPage:

      $view = Views::getView('my_view');
      $view->execute('page_1');
      $rows = $view->total_rows;
    

    $rows 将提供您要查找的总数。

    【讨论】:

    • 谢谢@Anson W Han。不幸的是 $rows = 10。似乎视图没有忽略寻呼机设置。
    • 你能提供整个钩子的代码吗?我用各种寻呼机设置进行了测试,总能得到预期的结果。另外,您能否在寻呼机设置中确认,您设置了寻呼机类型,而不是“显示指定数量的项目”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2015-04-12
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多