yiiページング関数の例
ページング関数の例
現在のページ数はyiiに内蔵されているので、このパラメータにアクセスするときは、パラメータpageを直接転送すればいいです!
フロントコードangularフレームワーク
public function actionIndex($perPage = 20, $type = null, $isWeek = 0)
{
Yii::$app->response->format = Response::FORMAT_JSON;
//
$weekWhere = $isWeek == 0 ? ['>','start_time',getLastEndTime()]: [' 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;
});
}