使用TP5实现上下篇文章和下一篇文章

省略个人部分逻辑代码~
实现获取列表条件在详情页面同步列表条件数据实现上下翻页功能
/**
 * 工作日志列表
 * @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];
}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值