分页的函数例子

    public function actionIndex($perPage = 20, $type = null, $isWeek = 0)
    {   
        Yii::$app->response->format = Response::FORMAT_JSON;            
        //判断周末非周末
        $weekWhere = $isWeek == 0 ? ['>','start_time',getLastEndTime()]: ['<','start_time',getLastEndTime()];
        // 判断互动的类型是否为全部或单独的活动类型
        $typeWhere = $type > 0 ? ['type_id' => $type]: '';

        $query = Activity::find()
                ->with([
                'type',
                'tags',
                'question',
                'user',
                'answerList',
                'feedbackList'
                ])
                ->asArray()
                ->where(
                        ['and',
                            ['in', 'status', [
                                Activity::STATUS_DRAFT,
                                Activity::STATUS_RELEASE,
                                Activity::STATUS_PREVENT,
                                Activity::STATUS_SHUT,
                                Activity::STATUS_CANCEL,
                            ]],
                            $weekWhere,
                            $typeWhere,
                        ]
                    )
                ->orderBy($this->activity_order);        

        $countQuery = clone $query;
        $pagination = new Pagination([
            'totalCount' => $countQuery->count(),
            'pageSize' => $perPage
        ]);

        // 总页数
        $totalCount =  $pagination->totalCount;

        // 活动的数据
        $activities = $query->offset($pagination->offset)
        ->limit($pagination->limit)
        ->all();

        foreach ($activities as $key => $activity) {
            $activities[$key]['answer_count'] = count($activity['answerList']);
            $activities[$key]['feedback_count'] = count($activity['feedbackList']);
            $activities[$key]['preview_url'] = Yii::$app->params['domain'].'preview/'.$activity['id'];
            $activities[$key]['filter_url'] = Yii::$app->params['domain'].'filter/'.$activity['id'];

            //set last week days
            $activities[$key]['this_week'] = getLastEndTime() < $activity['end_time'] ? 1 : 0;
        }

        return [
            'totalCount' => $totalCount,
            'activities' => $activities,
        ]; 

    }

注意当前页数是yii内置的,访问这个参数的时候,直接传参数page就可以!

前台代码 angular框架

fetchPage: function(type, page, isWeek) {
    page = page || 1;
    var params = {
        'type': type,
        'page': page,
        'isWeek': isWeek,
        'perPage': 10 //每页20条
    };
    return $http.get('/activity', {
        params: params
    }).then(function(data) {
        return data;
    });

 }

西树先森
7.1k 声望926 粉丝

从事开发多年,前端、后端(go、Python、php)、服务架构都有涉猎,经历过大公司、创业公司,擅长前端及公司技术选型。