关于分页类的疑惑,为何要区分是否分页,
发布于:2022-01-17 09:50:54
#1 霸气千秋
我在使用speedphp时使用smarty模板,但是数据少与每页条数时,speedphp不再返回数据,导致页面无数据,没办法只好去修改那个判断了,下边是我修改的结果,不知道大家有什么好的方法没有,修改是从spModel.php的440行开始的
/* 此处做了修改 修改前的内容在本页最后注释着 */
/* 作者在这里进行了判断,是否分页,但是在smarty中使用时,无分页时则无数据返回,导致页面显示不正常 */
$total_page = ceil( $total_count / $pageSize );
$page = min(intval(max($page, 1)), 0==$total_count?1:$total_count); // 对页码进行规范运算//由于我把判断分页删除了,故总记录数可能为零,所以记录为空时,$page会变成零
$this->pageData = array(
"total_count" => $total_count, // 总记录数
"page_size" => $pageSize, // 分页大小
"total_page" => $total_page, // 总页数
"first_page" => 1, // 第一页
"prev_page" => ( ( 1 == $page ) ? 1 : ($page - 1) ), // 上一页
"next_page" => ( ( $page == (0==$total_page?1:$total_page) ) ? (0==$total_page?1:$total_page) : ($page + 1)), // 下一页//同上 由于 删除了是否进行判断,故 会出现问题//这里可以考虑将$total_page的值改为一,或者使用中间变量
"last_page" => $total_page, // 最后一页
"current_page"=> $page, // 当前页
"all_pages" => array() // 全部页码
);
for($i=1; $i <= $total_page; $i++)$this->pageData['all_pages'][] = $i;
var_dump($limit = ($page - 1) * $pageSize . "," . $pageSize);
if('findSql'==$func_name)$conditions = $this->model_obj->_db->setlimit($conditions, $limit);
/*结束修改 */
该贴已经同步到 霸气千秋的微博
2011-07-25 16:50:23
#2 霸气千秋
代码怎么发成那个样子了,我再试试看
2011-07-25 16:52:45
#3 jake
“数据少与每页条数时,speedphp不再返回数据”,
那么,就是如果返回数据,那么就要分页,不返回数据,那么就不分页,很难区分吗?
在smarty里面,if一下$pager是否非空然后再foreach,这是很正常的逻辑。列表什么的都需要这一步。
{if $pager}
分页
{else}
不分页
{/if}
当然,在真实开发中,一般就是{if $pager}{/if}来判断是否显示分页的DIV。
2011-07-25 21:33:10
#4 霸气千秋
:lol关键是,在{ 第1页/共1页 共10条 每页显示10 第一页 上一页 下一页 最有一页 }这里 我用的是 $[ret][fenye] 来返回数据直接使用,如果没有返回值的话,就需要重写html,不然数据全是空的,建议给上返回值, 不然要是html中的这部分代码很复杂的话,。。。写着会很痛苦。。。。
2011-07-26 09:20:23
#5 jake
有个简单的方法
控制器内:
$pager = xxx->spPager()->getPager();
if( ! $pager){
$pager = 你想要返回的东西。
}// 然后再发给模板
$this->pager = $pager;
当然,以上方法在模板里面也可以做,其实就是简单的IF判断而已。
模板:
{if $pager}
这里是有分页的情况:
{else}
这里是
没有分页的情况:
{/if}
2011-07-26 12:48:16
#6 wwwzjy
似乎在没有分页的时候<{$pager.total_count}>,<{$pager.total_page}><{$pager.page_size}>这几个的返回值都是空的。
2011-07-26 20:46:04
#7 jake
似乎在没有分页的时候,这几个的返回值都是空的。
wwwzjy 发表于 2011-7-26 20:46
所以就可以判断分页是否需要显示了。楼主只是将这个判断放到spModel里面,那是完全没必要的。M层是提供数据,而V层(smarty)才是根据数据判断显示内容的所在。
2011-07-26 20:58:41
#8 霸气千秋
:dizzy:
这个方法我知道,但是我所不解的是为什么要
区分是否分页,并返回数据为何不 即使不分页,也要返回相关的基础信息,
[fenye] => Array
(
[total_count] => 8
[page_size] => 15
[total_page] => 1
[first_page] => 1
[prev_page] => 1
[next_page] => 1
[last_page] => 1
[current_page] => 1
[all_pages] => Array
(
[0] => 1
)
)
比如我在模板中使用了 起其中的一部分数据,如果按照jake的思路
就要在controller 中区分分数数据是否为空,
然后在smarty中根据 controller中 返回的数据 来判断显示的是 有数据的还是没有数据的
这样是不是过于复杂了,
不如直接下model中返回,省去了 在 controller 和 smarty 的 判断
郁闷
2011-07-27 10:24:14
#9 虞飞
我在使用speedphp时使用smarty模板,但是数据少与每页条数时,speedphp不再返回数据,导致页面无数据,
这个是什么意思?比如说你设定一页显示10条数据,你是说,当数据一共只有6条的时候,你的页面上就什么数据也没有,一条也没显示吗?那是你自己的代码有问题,关分页类什么事情啊。我试过的,完全正常。仔细检查下你自己的代码吧,不要去修改分页类的。
2011-07-27 11:33:56
#10 虞飞
你现在改来改去,把你自己都绕晕了,我也看着眼晕。
2011-07-27 11:34:47
#11 jake
这个方法我知道,但是我所不解的是为什么要 区分是否分页,并返回数据
为何不 即使不分页,也要返 ...
霸气千秋 发表于 2011-7-27 10:24
“就要在controller 中区分分数数据是否为空,
然后在smarty中根据 controller中 返回的数据 来判断显示的是 有数据的还是没有数据的
这样是不是过于复杂了,”
这两句话是不是误解了我的意思?
我是说可以在控制器做一下IF判断,也可以在smarty里面做,随便一边做都可以,怎么就说成两边都要做了呢?
先看清楚我的回复。
这只是一个小的IF判断,大家在开发的时候用就知道了,我也不说太多了,我的几个回帖都是在重复说明这个小IF的使用。
2011-07-27 12:09:15
#12 霸气千秋
这个是什么意思?比如说你设定一页显示10条数据,你是说,当数据一共只有6条的时候,你的页面上就什么数 ...
虞飞 发表于 2011-7-27 11:33
大哥,你用过分页没,我是说
[fenye] => Array
(
[total_count] => 8
[page_size] => 15
[total_page] => 1
[first_page] => 1
[prev_page] => 1
[next_page] => 1
[last_page] => 1
[current_page] => 1
[all_pages] => Array
(
[0] => 1
)
)
这部分,不是说内容,,,
2011-07-27 20:55:37
#13 wubi
回复 12 霸气千秋 jake已经说的很明白了。那只是smarty的简单的一个IF判断
2011-07-27 22:17:30
#14 霸气千秋
这个是什么意思?比如说你设定一页显示10条数据,你是说,当数据一共只有6条的时候,你的页面上就什么数 ...
虞飞 发表于 2011-7-27 11:33
没看懂我的意思么
我说的是这一部分为空,不是数据为空,
[fenye] => Array
(
[total_count] => 8
[page_size] => 15
[total_page] => 1
[first_page] => 1
[prev_page] => 1
[next_page] => 1
[last_page] => 1
[current_page] => 1
[all_pages] => Array
(
[0] => 1
)
)
:Q郁闷,
2011-07-28 00:24:01
#15 霸气千秋
回复 11 jake :Q,我知道怎么做,只是不解为什么要区分,是否返回分页数据,这个才是我困惑的,而不是怎么做,,,
2011-07-28 22:34:45