1

基本的に、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)

どうやって?

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 に答える