1.CakePHPで掲示板#ページング機能
だいたいの形はできたのですが、これではまだまだ実運用はできないのでちょこちょこ付加機能をつけて行きたいと思います
まずはページング機能
どうやらこれも簡単にできるようです
参考URL:CakePHPマニュアル:ページ付け(Pagination)»コントローラのセットアップ
と思ってマニュアル見たけどよくわからん。
参考URL:PageNatorの使い方
こっちのが良くわかります。
まずはコントローラを編集します
■/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変数に一気にページ分のデータを入れています
次にビューを編集します。編集というよりページ送り機能をつけたい部分に追加といった方が正確かも
■/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('...');
}
?>
これだけでページング機能が実装できます
Write up a little something about yourself here. Something short and sweet, or longer if you'd like.