【问题标题】:Create pagination from gii code generation in yii2在 yii2 中从 gii 代码生成创建分页
【发布时间】:2017-01-04 18:05:19
【问题描述】:

我已经使用 Gii 生成我的代码。

现在,我想将视图中的表格显示为分页。 所以,我是这样使用的:

控制器

public function actionIndex() {
    $searchModel = new BarangSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    $countDataProvider = clone $dataProvider;


    $paging = new \yii\data\Pagination([
        'totalCount' => $countDataProvider->count(),
        'defaultPageSize' => 5
    ]);


    return $this->render('index', [
                'searchModel' => $searchModel,
                'dataProvider' => $dataProvider,
                'paging' => $paging
    ]);
}

查看

<?php
Pjax::begin([
    'timeout' => 5000,
    'id' => 'pjax-gridview'
]);
?>

<?=
GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'NO_URUT',
        'CONSIGNEE',
        'CONTAINER',
        'SIZE',
        'COIL_NO',
        'NET',
        'GROSS',
        'CONTRACT_NO',
        'KET',
        'NAMA_FILE',
        'TGL_UNSTUFF',
        'CREATED_AT',
        'UPDATED_AT',
        [
            'attribute' => 'CREATED_BY',
            'value' => function($data) {
                $username_created_by = $data->CREATED_BY;
                if ($user = User::findIdentity($data->CREATED_BY)):
                    $username_created_by = $user->username;
                endif;
            }
        ],
        'UPDATED_BY',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]);
?>

它给了我这样的错误:

Calling unknown method: yii\data\ActiveDataProvider::count()

在gii2中实现分页的最佳实践,我也想使用pjax来管理这个分页。

寻求帮助。非常感谢

【问题讨论】:

  • 尝试getTotalCount() 而不是count()
  • 如何在索引中创建:= \yii\widgets\LinkPager::widget([ 'pagination' => $paging ]); ?>
    只创建分页索引,而不是分页本身。

标签: php pagination yii2


【解决方案1】:

感谢 Kostas,它现在可以工作了:

最终代码如下:

public function actionIndex() {
    $searchModel = new BarangSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    $dataProvider->pagination = [
        'pageSize' => 2,
    ];

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

【讨论】:

  • 是的,就是这样。考虑看看kartik 的GridView。你可以在这里找到它:demos.krajee.com/grid
【解决方案2】:

您可以像这样设置dataProviderpageSize

$dataProvider->pagination = [
    'pageSize' => 5,
];

如果您在GridView 之间有Pjax::beginPjax::end,那么分页将自动使用Pjax。

更多详情可以查看here

【讨论】:

  • 谢谢,但我该放在哪里:$dataProvider->pagination = [ 'pageSize' => 5, ];
  • 紧随其后:$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2016-09-15
相关资源
最近更新 更多