首页 > IT.IT > 在cakephp中使用paginate的简要使用方法小结

在cakephp中使用paginate的简要使用方法小结

2009年6月26日  如果本文对您有帮助,请留下您宝贵的足印!==>

paginate是cakephp里面用来取数据列表的重要方法,本文中主要讨论的是他的简单使用方法,并不涉及高级复杂的使用。当然本文的范例也并没有什么实际意义,说明问题而已。

一、数据结构
paginate_01
二、相关文件
controllers/mylists_controller.php

<?php
class MylistsController extends AppController{
	var $name="Mylists";
	var $uses=array("Mylist");
	var $layout="mylayout";
	var $paginate = array(
		'conditions' => array("id <="=>"20"),
        	'fields' => array('id', 'name'),
	        'limit' => 1,
        	'page' => 1,
	        'order' => array(
        	    'id' => 'asc'
	        )
	);
	function index(){
		$this->set('data', $this->paginate('Mylist'));
		$this->set('data2', $this->paginate('Mylist',array("id >="=>"3")));
		$this->paginate["Mylist"]=array(
			'conditions' => array("id <="=>"7"),
			'fields' => array('id', 'name'),
			'limit' => '3',
			'page' => '1'
		);
		$this->set('data3', $this->paginate('Mylist',array("id >="=>"3")));
	}
}
?>

models/mylist.php

<?php
class mylist extends AppModel {
	var $name = "Mylist";
}
?>

views/mylists/index.ctp

<?
echo "<pre>";
print_r($data);
print_r($data2);
print_r($data3);
echo "</pre>";
foreach($data2 as $d2):
	echo $d2["Mylist"]["id"]."<br/>";
endforeach;
echo "<br/>===<br/>";
foreach($data3 as $d3){
	echo $d3["Mylist"]["id"]."<br/>";
}
echo "<br/>===<br/>";
echo $paginator->sort('ID', 'id');
echo $paginator->counter();
echo $paginator->counter(
  array(
    'format' =>'Page %page% of %pages%, showing %current% records out of %count% total, starting on record %start%, ending on %end%'
  )
);
$page_count   = $paginator->counter('%pages%');
$page_current = $paginator->counter('%page%');
$record_count = $paginator->counter('%count%');
echo $paginator->prev('<< <b>previous</b>', array('escape'=>false),'null', array('class'=>'disabled'));
echo $paginator->numbers();
echo $paginator->next('next >>', array(), null, array('class'=>'disabled'));
echo $paginator->first('The First Page');
echo $paginator->first('The First Page', array());
echo $paginator->last('The Last Page', array());
?> 

views/layouts/mylayout.ctp

<?echo content_for_layout;?>

config/core.php

<?
//...
Configure::write('debug',0);
//...
?>

三、一点解释

1、controller里面的常量$paginate是用来定义查询的条件的,当然在controller里面的方法里面在调用前,可以用$this->paginate[“模型名称”]来进行查询条件的完全覆盖。

2、$this->paginate(‘模型名称’,附加的条件数组)可以有2中调用方式,一种是只写模型名称作为参数,另外一种是加上附加的查询条件。

3、在view中,当core.php中的debug是0的时候,是不能用debug()或者pr()来打印变量的,而foreach():endforeach;这种类似asp写法的写法,居然是php自带的。在view中这种类似asp的写法是推荐的写法,虽然正统的foreach(){}也是能用的。

4、$paginator->sort(显示的文字,字段的名称)可以实现自定义的按字段排序链接功能。很不错。

5、$paginator->counter () 默认不带参数的时候,显示的 类似 “1 of 2”  这种超级简单的词句,可以用array的format来制定格式。或者使用一个字符串来获得对应的数值。可用的变量名有:

%pages%,%page%,%current%,%count%,%start%,%end%

6、$paginator->numbers(); 输出所有的页码。

7、$paginator->first()和$paginator->last()输出首页和尾页链接,指定一个参数时是显示的文字,第二个参数可以指定连接的一些细节参数。

8、$paginator->prev()和$paginator->next()前2个参数分别是链接的文字和链接细节参数数组,而后2个参数分别是当前连接不该生效的时候的文字和链接细节,如:当前没有页码或者当前页就是首页的时候,首页链接就应该是失效的。


本文来自苏南的博客, 转载请注明网址:http://newsn.net, 谢谢!
我的淘宝小店:http://68zz.com
我的Sina圈子:http://q.blog.sina.com.cn/pctalk


作者: 苏南 分类: IT.IT 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.