基本上我想使用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)
我该怎么办?
答案 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);
这是个主意。