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属于弱类型的语言,可能在某些情况下不会出现错误,在其他情况下可能就出现了问题,所以一定要遵守语法规范。