【问题标题】:CakePHP: Custom pagination with an arrayCakePHP:使用数组进行自定义分页
【发布时间】:2017-08-07 21:32:49
【问题描述】:

我正在尝试在 CakePHP 中对数组进行分页。该数组是从 JSON 文件中提取的,因此不使用任何数据库查询或任何内容。我试图坚持使用 CakePHP 的功能,以确保我不会编写无用的代码。我一直在环顾四周,找不到任何关于我的问题的答案。

数组如下:

array(161) { 
    [0]=> array(8) { 
        ["id"]=> int(589) 
        ["status"]=> string(7) "running" 
        ["threads"]=> int(12) 
        ["create_time"]=> float(1487712882.42) 
        ["memory_usage_precent"]=> float(11.0328674316)             
        ["cpu_usage_precent"]=> int(62) 
        ["cwd"]=> string(1) "/"   
        ["process_name"]=> string(16) "plugin-container" 
    }
}

这是数组中 161 行中的一行。如何使用 CakePHP 的方法对其进行分页?

【问题讨论】:

  • Cake 的 Paginator 组件和 Paginator Helper 专门设计用于对从 Table 类加载的模型进行分页,通过操作下面的查询。它们不能用于对数组进行分页。您需要手动分页。

标签: php arrays pagination cakephp-3.0


【解决方案1】:

这是一个从Array进行分页的例子

第 1 步 - PHP 数据数组:

$data = [
  [
    "id"=> 0,
    "status"=> "running"
  ],[
    "id"=> 1,
    "status"=> "running"
  ],
  #More Arrays ...
];

第 2 步 - 准备数据 [计算]

$TotalDatas     = count($data); #Total number of Data in Array
$StartFrom      = 0; #Start from Array index
$DisplayLimit   = 2; #Limit the result per page
$CurrentPage    = isset($_GET['page'])? $_GET['page'] : 0; #Get the page number value from URL

$StartFrom      = $CurrentPage*$DisplayLimit; #Update the Array index by calculating Page number and Limit

第 3 步 - 使用循环显示数据:

for($i=$StartFrom; $i<$StartFrom+$DisplayLimit; $i++){ #Increase the Array index by Limit
  if($i>=$TotalDatas){
    continue; #Break Or put some message, Because no more Data in Array
  }
  var_dump($data[$i]);
}

浏览网址如 - localhost?page={PAGE_MUNBER_HERE}

示例:

localhost?page=3

注意:以上代码是基本分页的简单示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多