getPageCount() public method

public getPageCount ( ) : integer
return integer number of pages
示例#1
0
 /**
  * Adds HTTP headers about the pagination to the response.
  * @param Pagination $pagination
  */
 protected function addPaginationHeaders($pagination)
 {
     $links = [];
     foreach ($pagination->getLinks(true) as $rel => $url) {
         $links[] = "<{$url}>; rel={$rel}";
     }
     $this->response->getHeaders()->set($this->totalCountHeader, $pagination->totalCount)->set($this->pageCountHeader, $pagination->getPageCount())->set($this->currentPageHeader, $pagination->getPage() + 1)->set($this->perPageHeader, $pagination->pageSize)->set('Link', implode(', ', $links));
 }
 /**
  * sitemap
  * @return mixed
  */
 public function actionSitemap()
 {
     /* header response */
     Yii::$app->response->format = Response::FORMAT_RAW;
     $headers = Yii::$app->response->headers;
     $headers->add('Content-Type', 'application/xml');
     /* begin */
     $sitemaps = [];
     /* blog sitemap */
     $query = Blog::find()->where(['status' => Blog::STATUS_PUBLISHED]);
     $countQuery = clone $query;
     $pagination = new Pagination(['totalCount' => $countQuery->count()]);
     $pagination->setPageSize(Yii::$app->params['sitemapPageSize']);
     $pages = $pagination->getPageCount();
     if ($pages > 0) {
         for ($i = 0; $i < $pages; $i++) {
             $sitemaps[] = Yii::$app->urlManager->createAbsoluteUrl(['/blog/sitemap', 'page' => $i + 1]);
         }
     }
     /* page sitemap */
     $query = PageData::find()->where(['status' => PageData::STATUS_ACTIVE]);
     $countQuery = clone $query;
     $pagination = new Pagination(['totalCount' => $countQuery->count()]);
     $pagination->setPageSize(Yii::$app->params['sitemapPageSize']);
     $pages = $pagination->getPageCount();
     if ($pages > 0) {
         for ($i = 0; $i < $pages; $i++) {
             $sitemaps[] = Yii::$app->urlManager->createAbsoluteUrl(['/page/sitemap', 'page' => $i + 1]);
         }
     }
     /* load modules sitemap */
     $modules = scandir(\Yii::$app->vendorPath . '/modernkernel');
     foreach ($modules as $module) {
         if (!preg_match('/[\\.]+/', $module)) {
             $moduleName = str_ireplace('yii2-', '', $module);
             if (method_exists(Yii::$app->getModule($moduleName), 'sitemap')) {
                 $sitemaps = array_merge($sitemaps, Yii::$app->getModule($moduleName)->sitemap());
             }
         }
     }
     return $this->renderPartial('sitemap', ['sitemaps' => $sitemaps]);
 }
 /**
  * 获取列表记录
  *
  * @param array|string $condition 条件
  * @param array $params 参数
  * @param string $order 排序
  * @param int $page 页码
  * @param int $pageSize 每页数量
  * @return array
  */
 public static function getListByCondition($condition = '', $params = [], $order = null, $page = 1, $pageSize = 20)
 {
     $pagination = new Pagination();
     $pagination->setPage($page);
     $pagination->setPageSize($pageSize);
     $pagination->totalCount = static::find()->innerJoinWith('menuUrl')->andWhere($condition, $params)->count(1);
     $list = static::find()->innerJoinWith('menuUrl')->andWhere($condition, $params)->offset($pagination->getOffset() - $pagination->getPageSize())->limit($pagination->getPageSize())->orderBy($order)->asArray()->all();
     return ['paginationObj' => $pagination, 'pagination' => ['currentPage' => $page, 'pageSize' => $pageSize, 'pageCount' => $pagination->getPageCount(), 'totalCount' => $pagination->totalCount], 'list' => $list];
 }
示例#4
0
 /**
  * Serializes a pagination into an array.
  * @param \yii\data\Pagination $pagination
  * @return array the array representation of the pagination
  * @see addPaginationHeaders()
  */
 protected function serializePagination($pagination)
 {
     if ($this->serializedPagination !== null) {
         return $this->serializedPagination;
     }
     /** @var \yii\rest\Serializer $serializer */
     $serializer = $this->serializer;
     return $this->serializedPagination = [$serializer->linksEnvelope => \yii\web\Link::serialize($pagination->getLinks(true)), $serializer->metaEnvelope => ['totalCount' => $pagination->totalCount, 'pageCount' => $pagination->getPageCount(), 'currentPage' => $pagination->getPage() + 1, 'perPage' => $pagination->getPageSize()]];
 }
示例#5
0
 public function actionBlog($id = null)
 {
     $user = Yii::$app->user->id;
     /** @var $profile \app\models\Profile */
     if ($id === null) {
         $profile = Profile::findOne(['user_id' => $user]);
         $queryPosts = Posts::find()->where(['user_id' => $user]);
     } else {
         $queryPosts = Posts::find()->where(['user_id' => $id]);
         $profile = Profile::findOne(['user_id' => $id]);
         if (!isset($profile)) {
             Yii::$app->getSession()->setFlash('error', 'that profile not found');
             return $this->goHome();
         }
     }
     $pagination = new Pagination(['defaultPageSize' => 5, 'totalCount' => $queryPosts->count()]);
     $posts = $queryPosts->orderBy(['id' => SORT_DESC])->offset($pagination->offset)->limit($pagination->limit)->all();
     $model = new Posts();
     if ($model->load(Yii::$app->request->post()) && $model->validate()) {
         if ($model->createPost()) {
             $this->refresh();
         } else {
             $errors = $model->errors;
             Yii::$app->session->setFlash('error', 'Error: check the fields');
         }
     }
     return $this->render('blog', ['posts' => $posts, 'profile' => $profile, 'activePage' => Yii::$app->request->get('page', 1), 'countPages' => $pagination->getPageCount(), 'pagination' => $pagination, 'model' => $model]);
 }
示例#6
0
    /**
     * Lists all Survey models.
     *
     * @return mixed
     */
    public function actionIndexAjax()
    {
        $sort = Yii::$app->request->get('sort', 1);
        $self = Yii::$app->request->get('self', 0);
        $queryParams = Yii::$app->request->queryParams;
        if ($self > 0) {
            if (ZCommonSessionFun::get_user_id() < 1) {
                $url = Yii::$app->urlManager->createUrl([ZCommonSessionFun::urlLoginUserStr]);
                return $this->redirect($url);
            }
            $queryParams['SurverySearch']['uid'] = ZCommonSessionFun::get_user_id();
        } else {
            $queryParams['SurverySearch']['is_publish'] = 1;
        }
        $queryParams['SurverySearch']['is_publish'] = 1;
        $this->layout = false;
        $searchModel = new SurverySearch();
        $query = $searchModel->query($queryParams);
        $count = $query->count();
        // 分页
        $pagination = new Pagination();
        // 每页现实数量
        $pagination->pageSize = $this->pageSize;
        // 总数量
        $pagination->totalCount = $count;
        $offset = $pagination->getOffset();
        $limit = $pagination->getLimit();
        $query->offset($offset);
        $query->limit($limit);
        if ($self > 0) {
            $sort = 1;
        }
        // 最新
        if ($sort > 0) {
            $query->orderBy(['created' => SORT_DESC]);
        } else {
            $query->orderBy(['answer_count' => SORT_DESC]);
        }
        $a_models = $query->all();
        $role = ZCommonSessionFun::get_role();
        $pageCount = $pagination->getPageCount();
        $page = Yii::$app->request->get('page', 0);
        $data = '';
        // 有数据,从第1页开始到最后一页
        if ($pageCount > 0 && $page > 0) {
            // echo $page,$pageCount;
            // 超过最后一页
            if ($page > $pageCount) {
                $tempData['data'] = $data;
                $tempData['status'] = 0;
                $tempData['message'] = '';
                echo json_encode($tempData);
                exit;
            }
            foreach ($a_models as $key => $row) {
                if ($row->tax == 1) {
                    $url = Yii::$app->urlManager->createUrl(['answer/step1', 'id' => $row->id]);
                } else {
                    $url = Yii::$app->urlManager->createUrl(['answer/step2-answer2', 'id' => $row->id]);
                }
                $image = common\models\Survey::getImageUrl($row);
                $is_top_text = '';
                $is_top_url = '';
                $op0 = Yii::$app->urlManager->createUrl(['survey/recommend', 'id' => $row->id, 'op' => 0]);
                $op1 = Yii::$app->urlManager->createUrl(['survey/recommend', 'id' => $row->id, 'op' => 1]);
                $is_top = 0;
                if ($row->is_top > 0) {
                    $is_top_text = '取消推荐';
                    $is_top = 0;
                } else {
                    $is_top_text = '推荐';
                    $is_top = 1;
                }
                $str_recommend = '';
                if ($role == 1) {
                    $str_recommend = <<<str
       \t\t\t\t<a
       \t\t\t\t\tis_top="{$is_top}" op0="{$op0}" op1="{$op1}"
       \t\t\t\t\tclass="play recommend" data-ui="danger small icon-right" style="right: 75px;"> {$is_top_text}<i
       \t\t\t\t\t\tclass="iconfont icon-right"></i>
       \t\t\t\t</a>
str;
                }
                if ($self > 0) {
                    $row_ur_done = Yii::$app->urlManager->createUrl(['survey/done', 'id' => $row->id]);
                    // 发布
                    $row_ur_done_publish = Yii::$app->urlManager->createUrl(['survey/done', 'is_ajax' => 1, 'id' => $row->id]);
                    $row_ur_change = Yii::$app->urlManager->createUrl(['survey/step2', 'id' => $row->id]);
                    $data .= <<<str
                   <dl>
                   <a href="{$url}">
                   <dt>
                   <img src="{$image}"
                   alt="你有多怕谈恋爱:恋爱恐怖程度自评">
                   </dt>
                   <dd>
                   <h3>{$row->title}</h3>
                   </dd>
                   <dd>{$row->intro}</dd>
                   <dd>
                       <a class="btn_bg" href="{$row_ur_done}">预览</a>
    \t\t\t\t      &nbsp; &nbsp;
    \t\t\t\t      <a class="btn_bg ajax-publish" href="{$row_ur_done_publish}">发布</a>
    \t\t\t\t      &nbsp;&nbsp;
    \t\t\t\t    <a class="btn_bg" href="{$row_ur_change}">修改</a>
    \t\t\t\t\t<span>测试过:{$row->answer_count}</span>
                   </dd>

                   </a>
                   </dl>
str;
                } else {
                    $data .= <<<str


\t\t\t    <li class="diy-item" date-id="2626"><a
\t\t\t\t\thref="{$url}"
\t\t\t\t\ttarget="_blank">
\t\t\t\t\t\t<figure class="cover">
\t\t\t\t\t\t\t<img class=""
\t\t\t\t\t\t\t\tsrc="{$image}">
\t\t\t\t\t\t</figure>
\t\t\t\t\t\t<div class="diy-meta">
\t\t\t\t\t\t\t<div class="title mui-ellipsis">{$row->title}</div>
\t\t\t\t\t\t\t<span class="iconfont icon-start-filled5"></span> <span
\t\t\t\t\t\t\t\tclass="count">{$row->answer_count}人在测</span>
\t\t\t\t\t\t\t<div class="desc mui-ellipsis">{$row->intro}</div>
\t\t\t\t\t\t</div>
\t\t\t\t</a>
                   {$str_recommend}
\t\t\t\t<a
\t\t\t\t\thref="{$url}"
\t\t\t\t\tclass="play" data-ui="danger small icon-right"> 去测<i
\t\t\t\t\t\tclass="iconfont icon-right"></i>
\t\t\t\t</a></li>
str;
                }
            }
        }
        $tempData['data'] = $data;
        $tempData['status'] = 0;
        $tempData['message'] = '';
        echo json_encode($tempData);
        exit;
    }
示例#7
0
 public function actionSearch()
 {
     $q = Yii::$app->getRequest()->getQueryParam('q');
     $query = Posts::find()->where(['hide' => 0])->where(['like', 'full_text', $q]);
     $pagination = new Pagination(['defaultPageSize' => 5, 'totalCount' => $query->count()]);
     $posts = $query->offset($pagination->offset)->limit($pagination->limit)->all();
     Posts::setNumbers($posts);
     return $this->render('search', ['posts' => $posts, 'q' => $q, 'active_page' => Yii::$app->request->get("page", 1), 'count_pages' => $pagination->getPageCount(), 'pagination' => $pagination]);
 }
示例#8
0
 /**
  * Serializes a pagination into an array.
  * @param Pagination $pagination
  * @return array the array representation of the pagination
  * @see addPaginationHeaders()
  */
 protected function serializePagination($pagination)
 {
     return [$this->linksEnvelope => Link::serialize($pagination->getLinks(true)), $this->metaEnvelope => ['total-count' => $pagination->totalCount, 'page-count' => $pagination->getPageCount(), 'current-page' => $pagination->getPage() + 1, 'per-page' => $pagination->getPageSize()]];
 }