如何使用cakephp从文件夹中分页文件

时间:2013-11-08 14:18:13

标签: php cakephp pagination

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

我在控制器中有这个:

$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)

我该怎么办?

1 个答案:

答案 0 :(得分: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);

这是个主意。