省略个人部分逻辑代码~
实现获取列表条件在详情页面同步列表条件数据实现上下翻页功能
/**
* 工作日志列表
* @author lbl
* @date: 2020/7/24 10:29
* @param bool $detail 是否是详情页调用(detail)
* @param int $detailPage 获取第几页,详情页调用(detail)
* @return mixed|string
*/
public function index($detail = false,$detailPage = 1)
{
if($detail){
$list= $model->alias('a')
->leftjoin(['crm_office_relation'=>'b'],'a.id=b.office_id and b.admin_id='.$this->_admin_id." and b.is_delete=1")
->join(['crm_kk_admin'=>'c'],'a.admin_id=c.id')
->leftJoin(['crm_office_log_read'=>'d'],'a.id=d.office_id and d.admin_id='.$this->_admin_id)
->field("a.id")
->where($condition)
->where($conditionOr)
->order($field." ".$sort_type)
->group("a.id")
->paginate(10,false,['page'=>$detailPage]);
return $list->toArray()['data'];
}
}
public function detail()
{
//获取上下篇文章id
$pageID = $this->recursionPage();
$nowPage = empty($this->_get('page')) ? 1 : $this->_get('page');
$rParam = $this->request->get();
$preParam = $rParam;
$nextParam = $rParam;
if($pageID['nowPage'] != $nowPage ){
if($pageID['nowPage'] < $nowPage ) $preParam['page'] = $pageID['nowPage'];
if($pageID['nowPage'] > $nowPage ) $nextParam['page'] = $pageID['nowPage'];
}
$pageID['pre'] = empty($pageID['pre']) ? false : url('',['id'=>$pageID['pre']]).'?'.http_build_query($preParam);
$pageID['next'] = empty($pageID['next']) ? false : url('',['id'=>$pageID['next']]).'?'.http_build_query($nextParam);
$pageID['back'] = url('index').'?'.http_build_query($rParam);
$this->assign('pageID',$pageID);
}
/**
* 日志详情页的上一篇和下一篇功能
* @author lbl
* @date: 2020/7/24 14:04
* @param int $datailPage 当前第几页
* @param int $pre 上一篇id
* @param int $next 下一篇id
* @return array 返回上一篇和下一篇id还有当前页
*/
private function recursionPage($datailPage = 0, $pre = 0, $next = 0)
{
//echo $datailPage.'+'.$pre.'+'.$next.'<br>';
$nowPage = empty($this->_get('page')) ? 1 : $this->_get('page');
$datailPage = $datailPage ? $datailPage : $nowPage; //获取第几页数据
$recursion = false; //是否递归处理
$id = $this->_get('id'); //当前日志id
$pageId = array_column($this->index(true,$datailPage),'id');//获取列表id
//dump($pageId);
$pageKey = array_search($id,$pageId); //当前id序号
//获取下一篇id
if(empty($next)){
if(isset($pageId[$pageKey+1]) && $pageKey !== false){
$next = $pageId[$pageKey+1];
}elseif($pageKey !== false){
$recursion = true;
$datailPage = $datailPage + 1;
}else{
$next = reset($pageId);
}
}
//获取上一篇id
if(empty($pre)){
if(isset($pageId[$pageKey-1]) ){
$pre = $pageId[$pageKey-1];
}elseif($pageKey !== false){
//当前是第一页不递归处理
if($datailPage != 1){
$recursion = true;
$datailPage = $datailPage - 1;
}
}else{
$pre = end($pageId);
}
}
if($pre === 0 && $next === 0) $recursion = false;
//递归处理(当前id刚好处于当页第一条或者最后一条去找上一页或者下一页)
if($recursion){
return $this->recursionPage($datailPage,$pre,$next);
}
return ['pre'=>$pre,'next'=>$next,'nowPage'=>$datailPage];
}