1

基本上,我想使用 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)

我怎样才能?

4

1 回答 1

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

这就是想法。

于 2013-11-08T14:51:26.523 回答