thinkphp之ajax分页类

<?php

class IndexAction extends Action {

	public function index() {
		import("@.ORG.Page");       //导入分页类
		$Form   =   M(‘Form‘);
		$list = $Form->select();
		// $list = range(2,51);
		$param = array(
			‘result‘=>$list,			//分页用的数组或sql
			‘listvar‘=>‘list‘,			//分页循环变量
			‘listRows‘=>10,			//每页记录数
			‘parameter‘=>‘search=key&name=thinkphp‘,//url分页后继续带的参数
			‘target‘=>‘content‘,	//ajax更新内容的容器id,不带#
			‘pagesId‘=>‘page‘,		//分页后页的容器id不带# target和pagesId同时定义才Ajax分页
			‘template‘=>‘Index:ajaxlist‘,//ajax更新模板
		);
		$this->page($param);
		$this->display();
	}

	/**
	  +----------------------------------------------------------
	 * 分页函数 支持sql和数据集分页 sql请用 buildSelectSql()函数生成
	  +----------------------------------------------------------
	 * @access public
	  +----------------------------------------------------------
	 * @param array   $result 排好序的数据集或者查询的sql语句
	 * @param int       $totalRows  每页显示记录数 默认21
	 * @param string $listvar    赋给模板遍历的变量名 默认list
	 * @param string $parameter  分页跳转的参数
	 * @param string $target  分页后点链接显示的内容id名
	 * @param string $pagesId  分页后点链接元素外层id名
	 * @param string $template ajaxlist的模板名
	 * @param string $url ajax分页自定义的url
	  +----------------------------------------------------------
	 */
	public function page($param) {
		extract($param);
		import("@.ORG.Page");
		//总记录数
		$flag = is_string($result);
		$listvar = $listvar ? $listvar : ‘list‘;
		$listRows = $listRows? $listRows : 21;
		if ($flag)
			$totalRows = M()->table($result . ‘ a‘)->count();
		else
			$totalRows = ($result) ? count($result) : 1;
		//创建分页对象
		if ($target && $pagesId)
			$p = new Page($totalRows, $listRows, $parameter, $url,$target, $pagesId);
		else
			$p = new Page($totalRows, $listRows, $parameter,$url);
		//抽取数据
		if ($flag) {
			$result .= " LIMIT {$p->firstRow},{$p->listRows}";
			$voList = M()->query($result);
		} else {
			$voList = array_slice($result, $p->firstRow, $p->listRows);
		}
		$pages = C(‘PAGE‘);//要ajax分页配置PAGE中必须theme带%ajax%,其他字符串替换统一在配置文件中设置,
		//可以使用该方法前用C临时改变配置
		foreach ($pages as $key => $value) {
			$p->setConfig($key, $value); // ‘theme‘=>‘%upPage% %linkPage% %downPage% %ajax%‘; 要带 %ajax%
		}
		//分页显示
		$page = $p->show();
		//模板赋值
		$this->assign($listvar, $voList);
		$this->assign("page", $page);
		if ($this->isAjax()) {//判断ajax请求
			layout(false);
			$template = (!$template) ? ‘ajaxlist‘ : $template;
			exit($this->fetch($template));
		}
		return $voList;
	}
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。