1.CakePHPで掲示板#ページング機能

1.CakePHPで掲示板#ページング機能

だいたいの形はできたのですが、これではまだまだ実運用はできないのでちょこちょこ付加機能をつけて行きたいと思いますwing.gif

enpitu02.gifまずはページング機能

どうやらこれも簡単にできるようです

参考URL:CakePHPマニュアル:ページ付け(Pagination)»コントローラのセットアップ

と思ってマニュアル見たけどよくわからん。

参考URL:PageNatorの使い方

こっちのが良くわかります。

futaba.gifまずはコントローラを編集します

■/app/controllers/boards_controller.php■編集

<?php
class BoardsController extends AppController
{

   var $name = "Boards";
   var $uses = array("Board");
   var $layout = 'boards';

   var $paginate = array('limit' => 10,'order' => array( 'Board.created' => 'desc' ) ); //ここを追加

   function index(){
      // $this->set("boards",$this->Board->find('all')); ここを削除
      $this->set("boards",$this->paginate('Board')); //ここを追加
   }
   ………

var $paginate = array('limit' => 10,'order' => array( 'Board.created' => 'desc' ) );
で、「10件づつcreatedフィールド(投稿日)の降順で並び替えたもの」 と指定しています

$this->set("boards",$this->paginate('Board'));
で、boards変数に一気にページ分のデータを入れています

futaba.gif次にビューを編集します。編集というよりページ送り機能をつけたい部分に追加といった方が正確かもheart01.gif

■/app /views /boards/index.ctp■追加
戻る/次へリンク

<?php e($paginator->prev('戻る')); ?>
<?php e($paginator->next('次へ')); ?>

ページング機能

<?php
    e($paginator->numbers(array('separator' => ' ','modulus' => 4,)));
?>

ページング機能+α(さらに前や後ろがある時に…で表示)

<?php
    if ($paginator->counter(array('format' => '%page%')) - 2 > 1) {
        e('...');
    }
    e($paginator->numbers(array('separator' => ' ','modulus' => 4,)));
    if ($paginator->counter(array('format' => '%page%')) + 2 < $paginator->counter(array('format' => '%pages%'))) {
        e('...');
    }
?>

これだけでページング機能が実装できますw04.gif




AUTHOR

  • footerWrite up a little something about yourself here. Something short and sweet, or longer if you'd like.

FLICKR

  • add flickr code here, or delete this and use the widget version.

TWEETS

  • add twitter code here, or delete this and use the widget version.

Pets