全情報が見れる管理画面作成してみた

全件表示できて、なおかつeditadddeleteができる管理画面を作成します。
最初にbakeコマンドで作成されたindex.ctpが管理画面のようなものですが、
admin権限を設定してないので、admin_をコントローラー名とビューの前につけます


全件表示すると多い場合は、paginateをしようして
表示する件数を指定します


function admin_kanri(){

$this->paginate['limit'] = 20;
$this->set('shop',$this->paginate());

}


ビュー側に記述するもの
paginater sample
http://www.spokslog.com/book/paginator_tests/preview/

これで20件ずつ表示できます


検索機能を付けたい場合は、paginateでは、ページを切り替えたときに値を保持してくれないので、
$paginator->options(array('url'=>array('search'=>$search)));

$this->passedArgs
を使用します

簡単に言うと、URLで値をやり取りします。



paginateでの値の受け渡し


・まず、ビューで検索のフォームを作成します
 <?php
 echo $form->create('Shop', array('action' => 'kanri'));
 echo $form->input('shop1',array('label' => false,'default' => $search));
 echo $form->end('saerch');
 ?>

submitされると、inputで記述したデータがactionで指定された場所に渡されます
$thisで入っているデータが確認できます

paginateでページを進めると、そのデータが消えてしまうので、URLに残して渡せるようにします。


★流れ

1、submitされてactionに飛んでいく

action内↓

if( !empty($this->data) ){
$shop1 = $this->params['data']['Shop']['shop1'];
}else if( !empty($this->passedArgs)) {
$shop1 = $this->passedArgs['search'];
}else{
$shop1="";
}
    $this->set('search',$shop1);

$this->paginate=array(
'conditions' =>array("Shop.shop1 LIKE" => "%".$shop1."%"),
'limit' => '20'
);
$this->set('shop',$this->paginate());


2、postされたデータは$this->dataにはいっているので、空でない場合は
  $shop1 = $this->params['data']['Shop']['shop1'];
  が実行される


3、$this->set('search',$shop1);でビューに検索する単語が渡される


4、ビューに記述された
  $paginator->options(array('url'=>array('search'=>$search)));
  で、URLに search:検索する単語 という形で追加される。
  この値は$this->passedArgs['search']で取得できます。


5、paginateでページ遷移すると、またアクションが実行されて、今度はpostされていないので、URLから値を取得します
  $shop1 = $this->passedArgs['search'];が実行されます


6、$this->set('search',$shop1);がセットされて、、、

って言うのを繰り返します。


参考サイト
http://d.hatena.ne.jp/cakephper/20080907/1220796088
http://74.125.153.132/search?q=cache:WJpWcQglqw8J:d.hatena.ne.jp/seto-san/20090813+passedArgs%E3%80%80%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89&cd=5&hl=ja&ct=clnk&gl=jp&client=firefox-a


そのほかの方法として、セッションを利用する方法もあるようです!


memo

paginateで条件文にLIKE,ORを指定する方法
http://phptips.seesaa.net/article/104597687.html