ThinkPHP分页丢失参数的解决办法
来源:互联网 发布:python运维脚本优势 编辑:程序博客网 时间:2024/06/05 19:17
Controller类里接收的参数如下:
$cat=(int)I("cat");
$navID=(int)I("navID");
$lists=M("users_liverecord l")
->field("u.user_nicename,u.avatar,u.id,a.title as course_name,a.content,l.*")
->join("left join {$prefix}users u on u.id=l.uid")
->join("left join {$prefix}apply_records a on l.applyid=a.id")
->where($map)
->where("l.isdisplay=1 and l.islive=0 and l.type=0")
->order("l.endtime desc")
->select();
//var_dump($lists);
$video=M("users_liverecord")
->where("type=1 and isdisplay=1")
->where($mas)
->select();
foreach($video as $k=>$vo){
$userinfo=M("users")->field("user_nicename,avatar")->where("id='{$vo['uid']}'")->find();
$video[$k]['user_nicename']=$userinfo['user_nicename'];
$video[$k]['avatar']=$userinfo['avatar'];
$video[$k]['course_name']=$vo['video_name'];
$video[$k]['content']=$vo['video_conn'];
}
$hebing= array_merge($video, $lists);
foreach($hebing as $k=>$v){
$order1[$k]=$v['showid'];
}
/* 排序 */
array_multisort(SORT_DESC, $hebing); //推荐倒序 点亮倒序 开播时间倒序
$count=count($hebing);
$Page=new \Common\Lib\Page3($count,$pageSize,array("cat"=>$cat,"navID"=>$navID));
$show = $Page->show();// 分页显示输出
$hebing_fen=array_slice($hebing,$Page->firstRow,$Page->listRows);
$info=M("demand_classify")->where("id='{$cat}'")->find();
if($info['uid']>0){
$info1=M("demand_classify")->where("id='{$info['uid']}'")->find();
$title=$info1['name']."-".$info['name'];
}else{
$title=$info['name'];
}
$this->assign('lists',$hebing_fen);// 赋值数据集
$this->assign('page',$show);// 赋值分页输出
$this->assign('current',$navID);
$this->assign('title',$title);
通过以上代码,我们发现,上面是通过联合查询,将两个数组合并成了一个数组。
官方手册里的分页带参数是把参数放在了where条件数组中,如下显示:
$count= $User->where($map)->count();// 查询满足要求的总记录数
- $Page=new \Think\Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数
- //分页跳转的时候保证查询条件
foreach($mapas $key=>$val){
- $Page->parameter[$key]= urlencode($val);
- }
- $show= $Page->show();// 分页显示输出
很明显,这种方式在此行不通。所以我们要另找别的方法。
通过上面的分页操作,我们发现,是通过调用Page3这个分页类传递的参数,所以,我们要先从Page3分页类看起。
通过application/Common/Lib路径找到Page3类,通过分析Page3类,我们发现Page3类是可以接收数组作为参数列表的,所以,我们在调用Page3类的时候,先把需要分页传递的参数已数组的形式传递给Page3类。如上面代码里标红的部分。
那么,我们继续往下找,发现在show方法中,它调用了U方法来处理参数列表,并返回了url,如下图:
首先,我们把url打印一下,发现,之前传递的参数没有啦,那么,我们就知道,肯定是U方法里处理参数时出现了问题。所以,我们要从U方法里找问题。
通过以下地址,我们找到U方法:
/simplewind/Core/Common/functions.php
首先看参数列表注释
$vars是参数列表的形参。那么,我们在U方法内找$vars的相关操作。
这时,我们可以采用print_r();die;的方式对$vars相关的操作语句进行逐步打印查看。
这时,我们发现,在手动拼接链接地址的地方出现了问题,造成了参数丢失。
所以,我们对此处做如下的修改:
加上如上的代码,就不会出现参数丢失的问题了。
总结:出现问题时,不要着急,按照参数的调用,一步一步查找,及时打印数据看变化,就能找到出问题的地方。
语法规范一定要遵守,因为PHP属于弱类型的语言,可能在某些情况下不会出现错误,在其他情况下可能就出现了问题,所以一定要遵守语法规范。
- ThinkPHP分页丢失参数的解决办法
- thinkphp post分页 参数丢失问题
- thinkphp独立分组后分页功能不能用的解决办法
- ThinkPHP page添加分页参数
- ThinkPHP分页链接支持数组参数的办法
- thinkphp5 分页带参数的解决办法
- ThinkPHP分页及保持分页参数
- ThinkPHP分页的实现
- thinkphp的分页类
- thinkPHP分页的实现
- Thinkphp 3.2 的分页
- 使用thinkPHP的分页
- TP5分页丢失参数、TP5分页绑定参数
- 115 php thinkphp 分页后序号丢失 从1开始
- thinkphp 5.0+ 点击分页带上其他参数
- ThinkPHP分页有中文参数出现乱码
- ThinkPHP关于分页的使用
- ThinkPHP的分页样式修改
- C++语音识别接口快速入门(Microsoft Speech SDK)
- TP5 Model层 模型操作——指定数据库/表 && 自动写入时间
- PLSQL:[1]plsql中文乱码,显示问号
- 使用pyplot绘制sqrt以及x平方实例代码
- Vue 实现登录拦截(三)
- ThinkPHP分页丢失参数的解决办法
- 界面控件包Essential Studio for Windows Forms 2017 v3发布,增加DocIO内容控件
- python数据保存加载(numpy)
- socket 详解
- 【讯飞开放平台年中大聚惠!】硬件评估板低至1265元起,离线语音服务低至1800元起
- PBR 基于物理渲染的基础理论
- 浅谈IOC--说清楚IOC是什么
- stm32 rgb多彩led驱动
- 【c++】复杂的数据类型