【问题标题】:How to paginate Files from a Folder using cakephp如何使用 cakephp 对文件夹中的文件进行分页
【发布时间】:2013-11-08 22:51:26
【问题描述】:

基本上我想使用 CakePHP 中的文件夹/文件类对文件夹的内容进行分页。

我的控制器中有这个:

$dir = new Folder('img/gallery/'.$gallery[0]['Gallery']['path']);
$file = $dir->find('.*', true);
$this->set('files', $file);

现在我想对结果进行分页。它们看起来像这样:

array (size=188)
0 => string '52652681-023c-4e51-99b5-16cccbdd56cb.jpeg' (length=41)
1 => string '526f4034-9b6c-47c8-94f9-10e0cbdd56cb.jpeg' (length=41)
2 => string 'DSCF0232.JPG' (length=12)
3 => string 'DSCF0233.JPG' (length=12)
4 => string 'DSCF0234.JPG' (length=12)

我该怎么办?

【问题讨论】:

    标签: php cakephp pagination


    【解决方案1】:

    你可以使用简单的 php 代码来做到这一点。先计算总页数:

    $pageSize = 10;    
    $totalPages = (count($file) + $pageSize - 1) / $pageSize;
    
    $this->set('totalPages ', $totalPages);
    

    在您的模板中,您已经可以这样做了

    for($i = 1; $i <= $totalPages; $i ++){
        echo '<a href="YOUR_URI?page='.$i.'">'.$i.'</a>';
    }
    

    现在,当用户单击发送他想查看的页面的链接时,您将只显示数组的那一部分,而不是所有$file 列表。

    $page = intval($_GET['page']);
    $dir = new Folder('img/gallery/'.$gallery[0]['Gallery']['path']);
    $file = $dir->find('.*', true);
    $pageSize = 10;    
    $totalPages = (count($file) + $pageSize - 1) / $pageSize;
    $index = $page * $pageSize;
    $file_list = array();
    for($i = 0; $i < $pageSize; $i ++){
       if(isset($file[$index+$i]))
       $file_list[] = $file[$index+$i];
    }
    $this->set('totalPages ', $totalPages);
    $this->set('files', $file_list);
    

    这就是想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 2015-05-07
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多