【问题标题】:yii2 pagination do not workyii2分页不起作用
【发布时间】:2017-09-13 05:58:06
【问题描述】:

我进行了分页,但所有帖子(我有 8 个)都显示在每个页面上。我想在每页上显示其中的 4 个。我的错误在哪里?我认为问题出在count($posts),因为在我查看的其他帖子中,他们使用的是$posts->count(),但这种方法对我不起作用。感谢每一个建议!

控制器动作:

public function actionIndex()
{
    $searchModel = new PostSearch();
    $postModel = new \app\models\Post();
    $userModel = new \app\models\BlogUser();

    $posts = $postModel::find()->orderBy(['post_id' => SORT_DESC])->all();

    $pagination = new Pagination(['totalCount' => count($posts), 'pageSize' => 4]);

    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
        'postModel' => $postModel,
        'userModel' => $userModel,
        'posts' => $posts,
        'pagination' => $pagination
    ]);
}

查看 index.php:

<div class="content">
        <div class="row">
            <?php Pjax::begin(['id' => 'posts']) ?>
            <div class="col-md-12">
                <?php

                    foreach ($posts as $post)
                    {
                        $id = $post->user_id;

                        $user = $userModel::find()->where(['id' => $id])->one();

                        echo "<div class='col-md-6 blog-post'>
                                  <div class='col-md-3 post-prof-img'>"
                                        . Html::img('../images/' . $user->image, ['alt' => 'image', 'class' => 'tall img-circle']) .
                                  "<p class='text-center title-par'><strong><em> $user->username </em></strong></p>
                                   <p class='text-center'> $post->date_create</p>
                                  </div>
                                  <div class='col-md-9 post-cont'><p>"
                                        . Html::a('Click for more!',['view', 'id' => $post->post_id]) .
                                        "</p><label class='text-center'> $post->title : </label>
                                        <div class='fade-post'>
                                            $post->content
                                        </div>
                                  </div>
                              </div>";
                    }

                ?>

            </div>
            <?php Pjax::end() ?>
        </div>

    </div>

    <div class="row">
        <div class="col-md-3">
            <?= Html::a('Create Post', ['create'], ['class' => 'btn btn-primary']) ?>
            <?= Html::submitButton('Search', ['class' => 'btn search-button', 'style' => 'color: blue']) ?>
        </div>
    </div>

【问题讨论】:

    标签: php pagination yii2


    【解决方案1】:

    你应该使用 dataProvider->pagination->pageSize (而不是创建一个新的分页并传递给渲染)

      $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
      $dataProvider->pagination->pageSize=4;
    

    并且在视图中你可以使用例如:一个列表视图小部件作为

    /* index.php view file*/
    
     <?= 
       ListView::widget([
         'dataProvider' => $dataProvider,
       ]); 
     ?>
    

    或网格视图

    <?= GridView::widget([
          'dataProvider' => $dataProvider,
          'filterModel' => $searchModel,
          'columns' => [
              ['class' => 'yii\grid\SerialColumn'],
              'your_column1',
              'your_column2',
               .....
    
              ['class' => 'yii\grid\ActionColumn',
              'contentOptions' => ['style' => 'width:84px; font-size:18px;']],
          ],
      ]); ?>
    

    【讨论】:

    • 好的!我按照你说的做了,但我应该在视图中做什么?对不起,我在 yii2 和编程方面还是新手。也会编辑我的观点!我所做的是LinkPagination::widget([ WHAT SHOULD I DO HERE ]) :-)
    • 哪种类型的视图..你需要..一个gridview?? .. 一个列表视图 .. ??? ..通常分页很容易由小部件(网格视图或列表视图小部件)管理..答案已更新..
    • 我只想将我的布局拆分为页面,每个页面有 4 个帖子,但也许我不理解分页功能 :) 将在我的视图中添加图像以查看我想要做什么。我有 6 个帖子,我希望它们在此页面上为 4 个,其余的在第二页上。也许它对我来说有点先进:)
    • 我觉得有点高级。使用分页构建多列列表视图......我建议你从基于 gridview 的单个集合开始或使用这种小部件搜索适当的 yii2 扩展
    • 非常感谢您的时间和建议 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多