php - 如何使用 CDataProvider 在 Yii 中创建我自己的 DataProvider?

标签 php yii pagination dataprovider

我现在的情况是这样的。我正在使用 CSqlDataProvider 及其内部使用限制和偏移量的分页(页面大小)获取一些数据。之后我得到

$rawData = $sqldp->getData();

现在我需要进行一些处理并添加额外的数据。所以现在我明白了

$modRawData = modification($rawData);

现在,如果我创建一个 CArrayDataProvider 将其转换为 Dataprovider,以便我可以使用 CListView。

但是我的问题就在这里。现在我无法进行分页。如果我使用 CLinkPager 是可能的。但是有没有其他方法可以让我创建自己的 DATAPROVIDER 并可以在创建 dataProvider 时处理分页。

最佳答案

您可以直接设置 CArrayDataProvider,如下所示:

$rawData=Yii::app()->db->createCommand('SELECT * FROM table')->queryAll(); //fetches array of associative arrays representing selected rows
            $dataProvider=new CArrayDataProvider($rawData, array(
                'id'=>'consumer', //this is an identifier for the array data provider
                'sort'=>false,
                'keyField'=>'id', //this is what will be considered your key field
                'pagination'=>array(
                    'pageSize'=>30, //eureka! you can configure your pagination from here
                ),
            ));

现在您可以在 CListView 或 CGridView 中使用 $dataProvider ,例如

$this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'consumer-grid',
    'dataProvider'=>$data,
    'columns'=>array( // this array should include the attributes you want to display
        'id',
        'name',
        'additional_column_1',
    ),

));

CArrayDataProvider 的潜力可以满足您的标准需求,无需太多工作,尽管在某些情况下可能需要一些额外的工作来进行过滤和排序。你可以查看它是documentation page了解更多信息。

关于php - 如何使用 CDataProvider 在 Yii 中创建我自己的 DataProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739588/

相关文章:

PHP-FPM 不写入日志

php - 如何修改 zii.widgets.CBreadcrumbs 自动生成的 html?

file-upload - Yii 表单生成器

c# - MongoDb NORM - 分页和总文档

php - wordpress get_post_meta 不在循环中工作

php - 当用户点击链接时,立即将其转移到特定页面

使用分页创建 Spring 数据 JDBC 查询会提示 IncorrectResultSizeDataAccessException : Incorrect result size

ios - CollectionView 每个项目的分页起点

javascript - 如何在 javascript 中添加 'nofollow' 链接

Yii2 - 验证密码(哈希无效错误)