あたり(BlogPet)

ぺこぽんはあたりがほしいな。
あたりってどこにあるかな

*このエントリは、ブログペットの「ぺこぽん」が書きました。




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

あいの「1.CakePHPで掲示板#ページング機能」のまねしてかいてみるね

1.CakePHPではまだまだ実運用はまだまだ実運用はまだまだ実運用はまだまだ実運用はできたのセットアップと思いますまずはページング機能どうやらこれも簡単にできるようです参考URL:PageNatorのセットアップと思います!!

*このエントリは、ブログペットの「ぺこぽん」が書きました。




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




7.書き込み後の動作確認

7.書き込み後の動作確認

ようやくフォームもできた!バリデーションの設定も終わった!w02.gif

さて動かしてみますheart01.gif

保存はうまくいきました。

しかし!文字を少なくしてエラーに引っかかるようにしても、エラーメッセージ表示せずに一覧に飛んでしまいますga-n02.gif
ただ、データの保存はされていないようなので、どうやら検証ルールはきちんと動いている模様…

参照URL:CakePHPマニュアル:CakePHPブログチュートリアル»記事の追加
うえの記事と首っ引きで確認したところ、どうやらコントローラのSaveのあたりに問題がありそうなことに気づきました

if ($this->Post->save($this->data)) {
   $this->flash('Your post has been saved.','/posts');
}

この部分です。Saveがきちんと実行されたときのみ、リダイレクトなりをさせなきゃいけないんですね。
というわけでコントローラは最終的にこうなりました

■/app/controllers/boards_controller.php■編集最後[完成]

<?php
class BoardsController extends AppController
{

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

   function index(){
      $this->set("boards",$this->Board->find('all'));
   }

   function write(){
      if (!empty($this->data['Board'])){
         $data = array();
         $data["title"] = $this->data["Board"]["title"];
         $data["contributor"] = $this->data["Board"]["contributor"];
         $data["comment"] = $this->data["Board"]["comment"];
         if ($this->Board->save($data)) {
            $this->flash('保存完了したよ*:・(*-ω人)・:<br>一覧に戻るにはここをクリック','/boards');
         }
      }
   }
}
?>



それで作成したいなぁ(BlogPet)

きょうは、一覧するつもりだった?
だけど、きのう、あいのあいっぽい意味したいなぁ。
それで作成したいなぁ。

*このエントリは、ブログペットの「ぺこぽん」が書きました。




ぺこぽんは(BlogPet)

きょうぺこぽんは、ボタンに変更するはずだったの。

*このエントリは、ブログペットの「ぺこぽん」が書きました。




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