搜索
系统检测到您的用户名不符合规范:

谁来造福下 Tper,弄个分页的 polist

浏览:2725 发布日期:2014年01月10日 分类:求助交流
谁来造福下 Tper ?
我们的 volist 很好用,但是缺点是数据是由程序员提供的,前端没有任何更改的机会。比如排序,比哪分页中每页显示的条数。
而通常前端会根据页面的美观程度确定分页中每页的条数。所以想弄个带分页的 volist ,暂时叫polist 吧。
polist应该接收以下参数
id,offset,length,key,mod -> 与 volist 相比少了 name(不需要了)
加入
model -> 指明模型
scope -> 指明模型的命名范围
order -> 指明排序
rows -> 指明每页的条数

要在模型中先定义好各种命名范围,比如一个用户模型(User)中。protected $_scope = array (
'ListAll' => array('where'=>' 1=1 '), //列出所有用户
'ListMale' => array('where'=>array('male'=>1)),//列出所有男性
'ListFemale'=> array('where'=>array('male'=>0)),//列出所有女性
);
然后在标签中,接收 Model,Scope,Order,Rows,至于当前页,可以通过 I('get.p') 得到(改过分页名这里也要改变)。

然后,在前端页面中,可以通过<polist model="User" scope="ListMale" order=" uid desc " rows="5" id="vo">
{$vo.username}--{$vo.male} <br/>
</polist>
这样就可以让前端自由安排显示的条数和顺序了。前端只能传入带"逻辑"色彩的命名范围,他不需要知道什么SQL之类的,这个命名范围的列表是我们提供给前端的,所以不会对我们的数据造成任何影响,不会有什么SQL注入呀之类的。至于 order 是TP里的标准语法里的。也不会有事。

我们传了 rows="5" ,但还没有分页是吧。好说。
在 _polist 的实现中,创建个分页,跟在控制里一样,分页,形成相应的分页代码,然后把这个分页代码 assign 给一个 $pages 。在前台显示出来就是了。因为 polist 里面的东西会循环出现,所以,这个要通过assign弄到 polist以外。<polist model="User" scope="ListMale" order=" uid desc " rows="5" id="vo">
{$vo.username}--{$vo.male} <br/>
</polist>
<div class="pager">{$pages}</div>
这样OK?

PS:如果担心前端不会用 order ,不知道 order 怎么写,可以把 order 也写进命名范围,就OK了。只是,把 order 编码进命名范围,会使命名范围的量剧增。

再PS:如果多传一个 pagename ,能把一个页面中多个分页的情况也一并解决了。
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
qufo
积分:733 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /