vivre-tech / rest-grid
For Yii2: This extension provides the ability like GridView but for REST.
Installs: 11 246
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 3
Forks: 1
Open Issues: 0
Type:yii2-extension
pkg:composer/vivre-tech/rest-grid
Requires
- php: >=5.5
- vivre-tech/rest-renderer: *
- yiisoft/yii2: ~2.0.14
Requires (Dev)
- phpunit/phpunit: 6.5.*
This package is not auto-updated.
Last update: 2025-10-16 05:46:01 UTC
README
This extension provides the ability like GridView but for REST.
For license information check the LICENSE-file.
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist vivre-tech/rest-grid
or add
"vivre-tech/rest-grid": "*"
to the require section of your composer.json.
Usage
Example:
$arrayRows = []; foreach(range(1, 100) as $item) { $arrayRows[] = [ 'id' => $item, 'name' => 'Product ' . $item, 'price' => 100 + $item, 'created_at' => date('Y-m-d H:i:s') ]; } $dataProvider = new \yii\data\ArrayDataProvider([ 'allModels' => $arrayRows, 'pagination' => [ 'pageSize' => 5, ], ]); $grid = new \vivretech\rest\grid\Grid([ 'dataProvider' => $dataProvider, 'columns' => [ [ 'attribute' => 'id' ], [ 'attribute' => 'name' ], [ 'attribute' => 'price' ], [ 'attribute' => 'created_at' ] ] ]); return $grid->run();
Response
{
"metadata": {
"id": "aa899d9e6e420821e20f04ea857e0c2d_0",
"caption": null,
"description": null,
"options": [],
"header": {
"show": true
},
"filters": {
"show": true
},
"footer": {
"show": false
},
"request_params": {
"pager": {
"param": "page",
"size": "per-page"
},
"sorter": {
"param": "sort",
"separator": ",",
"multi_sort": false
}
}
},
"pager": {
"results": {
"total": 1212,
"per_page": 5
},
"pages": {
"total": 243,
"current": 1
}
},
"columns": [
{
"label": "Id",
"attribute": "id",
"description": null,
"options": [],
"sortable": true,
"filterable": false,
"header": {
"value": [],
"options": []
},
"filter": {
"selected": null,
"items": [],
"options": []
},
"footer": {
"value": [],
"options": []
}
},
{
"label": "Name",
"attribute": "name",
"description": null,
"options": [],
"sortable": true,
"filterable": false,
"header": {
"value": [],
"options": []
},
"filter": {
"selected": null,
"items": [],
"options": []
},
"footer": {
"value": [],
"options": []
}
},
{
"label": "Price",
"attribute": "price",
"description": null,
"options": [],
"sortable": true,
"filterable": false,
"header": {
"value": [],
"options": []
},
"filter": {
"selected": null,
"items": [],
"options": []
},
"footer": {
"value": [],
"options": []
}
},
{
"label": "Created At",
"attribute": "created_at",
"description": null,
"options": [],
"sortable": true,
"filterable": false,
"header": {
"value": [],
"options": []
},
"filter": {
"selected": null,
"items": [],
"options": []
},
"footer": {
"value": [],
"options": []
}
}
],
"items": [
{
"id": 1,
"name": "Product 1",
"price": 101,
"created_at": "2018-04-02 17:54:52"
},
{
"id": 2,
"name": "Product 2",
"price": 102,
"created_at": "2018-04-02 17:54:52"
},
{
"id": 3,
"name": "Product 3",
"price": 103,
"created_at": "2018-04-02 17:54:52"
},
{
"id": 4,
"name": "Product 4",
"price": 104,
"created_at": "2018-04-02 17:54:52"
},
{
"id": 5,
"name": "Product 5",
"price": 105,
"created_at": "2018-04-02 17:54:52"
}
]
}
Unit Testing
If you run the following command: composer install in a dev environment then you will find phpunit in /vendor/bin/phpunit.
In case phpunit in not installed via command composer install, just fallow next steps:
- run in console/terminal
brew install phpunit
To test, in the root of the project, base on how phpunit is installed you will have two choices to run:
- installed via command
composer installyou will have to execute in console/terminal:vendor/bin/phpunit - installed via
brewyou will have to execute in console/terminal:phpunit