Php yii2分页不起作用

Php yii2分页不起作用,php,pagination,yii2,Php,Pagination,Yii2,我进行了分页,但所有的帖子(我得到了8篇)都显示在每一页上。我想在每一页上显示其中的4个。我的错在哪里?我认为问题出在count($posts)上,因为在我看到的其他帖子中,他们使用的是$posts->count(),但这种方法对我不起作用。谢谢你的建议 控制器操作: public function actionIndex() { $searchModel = new PostSearch(); $postModel = new \app\models\Post(); $

我进行了分页,但所有的帖子(我得到了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
    ]);
}
view 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>


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

在视图中,您可以使用例如:listview小部件作为

/* index.php view file*/

 <?= 
   ListView::widget([
     'dataProvider' => $dataProvider,
   ]); 
 ?>
/*index.php视图文件*/
还是网格视图

<?= 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([我应该在这里做什么])
:-)哪种类型的视图。。你需要。。网格视图。。列表视图。。通常,分页很容易由小部件(gridview或list view小部件)管理。。答案更新..我只想将我的版面分成4个页面,每个页面上有4篇文章,但可能我不理解分页方式(足够:)将在我的视图中添加图像,以查看我正在尝试做什么。在那里我有6篇文章,我希望他们在这一页上有4篇,其余的在第二页上。也许对我来说有点先进:)我觉得有点先进。生成具有分页的多列列表视图。我建议您从基于gridview的单个集合开始,或者使用这种Widget搜索适当的yii2扩展。非常感谢您的时间和建议:-)
<?= 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;']],
      ],
  ]); ?>