PHPackages                             popov/zfc-data-grid-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. popov/zfc-data-grid-plugin

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

popov/zfc-data-grid-plugin
==========================

ZF module manager which extend possibility of ZfcDatagrid

0.0.1(7y ago)32271MITPHPPHP &gt;=5.5

Since May 25Pushed 6y ago2 watchersCompare

[ Source](https://github.com/popovserhii/zfc-data-grid-plugin)[ Packagist](https://packagist.org/packages/popov/zfc-data-grid-plugin)[ RSS](/packages/popov-zfc-data-grid-plugin/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (1)DependenciesVersions (4)Used By (0)

ZF2 DataGrid Plugin Module
==========================

[](#zf2-datagrid-plugin-module)

Welcome to the official ZfcDataGrid documentation. This documentation will help you to quickly understand how to use ZfcDataGrid.

If you are looking for some information that is not listed in the documentation, please open an issue!

ZF DataGrid Plugin Module based on [ZfcDatagrid](https://github.com/ThaDafinser/ZfcDatagrid) and is a kind of superstructure. Its main goal to reduce using complexity and improve code readability.

This module register new `data_grid_plugins` global config key and add `ColumnFactory`.

Working principle is using ZF2 way like `Zend\Form` which use array configuration for create form elements.

> Important! `DataGridPluginManager` set `$shareByDefault = false`, this allow avoid redundant classes declaration in configuration.

Usage
-----

[](#usage)

Register Plugin. For this move content of `vendor/popovserhii/zfc-data-grid-plugin/config/application.config.php.sample` in global `config/application.config.php`

In general you create *new Grid class* which will be response for concrete Grid in your ecosystem.

```
namespace Popov\Invoice\Block\Grid;

use Popov\ZfcDataGrid\Block\AbstractGrid;

class InquiryGrid extends AbstractGrid
{
    public function init()
    {
        $grid = $this->getDataGrid();
        $grid->setId('invoice');
        $grid->setTitle('Invoices');
        $grid->setRendererName('jqGrid');

        // native configuration
        #$colId = new Column\Select('id', 'invoice');
        #$colId->setIdentity();
        #$grid->addColumn($colId);

        // array configuration
        $colId = $this->add([
            'name' => 'Select',
            'construct' => ['id', 'invoice'],
            'identity' => true,
        ])->getDataGrid()->getColumnByUniqueId('invoice_id');

        // native configuration
        #$col = new Column\Select('code', 'invoice');
        #$col->setLabel('Invoice code');
        #$col->setIdentity(false);
        #$grid->addColumn($col);

        // array configuration
        $this->add([
            'name' => 'Select',
            'construct' => ['code', 'invoice'],
            'label' => 'Код инвойса',
            'identity' => false,
        ]);

        // native configuration
        #$colType = new Type\DateTime();
        #$col = new Column\Select('createdAt', 'invoice');
        #$col->setLabel('Date Create');
        #$col->setTranslationEnabled();
        #$col->setType($colType);
        #$col->setWidth(2);
        #$grid->addColumn($col);

        // array configuration
        $this->add([
            'name' => 'Select',
            'construct' => ['createdAt', 'invoice'],
            'label' => 'Date Create',
            'translation_enabled' => true,
            'width' => 2,
            'type' => ['name' => 'DateTime'],
        ]);

        // native configuration
        #$col = new Column\Select('name', 'contractor');
        #$col->setLabel('Contractor');
        #$col->setTranslationEnabled();
        #$col->setWidth(3);
        #$col->setUserSortDisabled(true);
        #$col->setUserFilterDisabled(true);
        #$grid->addColumn($col);

        // array configuration
        $this->add([
            'name' => 'Select',
            'construct' => ['name', 'contractor'],
            'label' => 'Contractor',
            'width' => 3,
            'user_sort_disabled' => true,
            'user_filter_disabled' => true,
        ]);

        // native configuration
        #$bg = new Style\BackgroundColor([224, 226, 229]);
        #$fmtr = new Column\Formatter\Link();
        #$fmtr->setAttribute('class', 'pencil-edit-icon');
        #$fmtr->setLink('/invoice/view/' . $fmtr->getColumnValuePlaceholder($colId));
        #$actions = new Column\Action('edit');
        #$actions->setLabel(' ');
        #$actions->setTranslationEnabled();
        #$actions->setFormatters([$fmtr]);
        #$actions->addStyle($bg);
        #$actions->setWidth(1);
        #$grid->addColumn($actions);

        // array configuration
        $this->add([
            'name' => 'Action',
            'construct' => ['edit'],
            'label' => ' ',
            'width' => 1,
            'styles' => [
                [
                    'name' => 'BackgroundColor',
                    'construct' => [[224, 226, 229]],
                ],
            ],
            'formatters' => [
                [
                    'name' => 'Link',
                    'attributes' => ['class' => 'pencil-edit-icon'],
                    // next two line are identical
                    //'link' => ['href' => '/invoice/view/%s', 'placeholder_column' => 'invoice_id'],
                    'link' => ['href' => '/invoice/view/%s', 'placeholder_column' => $colId], // special config
                ],
            ],
        ]);

        $formatter = setSourceAttr('data-barcode');
        #$formatterLink->setAttribute('class', 'barcode-icon');
        #$formatterLink->setBasedOn($grid->getColumnByUniqueId('product_id'));
        #$actions = new Column\Action('barcode');
        #$actions->setLabel(' ');
        #$actions->setTranslationEnabled();
        #$actions->setFormatters([$formatterLink]);
        #$actions->setRendererParameter('formatter', $formatterJs, 'jqGrid');
        #$actions->setWidth(1);
        #$grid->addColumn($actions);

        // array configuration
        $this->add([
            'name' => 'Action',
            'construct' => ['barcode'],
            'label' => ' ',
            'translation_enabled' => true,
            'width' => 1,
            'renderer_parameter' => ['formatter', $formatter, 'jqGrid'],
            'formatters' => [
                [
                    'name' => 'Barcode',
                    'source_attr' => 'data-barcode',
                    //'placeholder_column' => $grid->getColumnByUniqueId('product_id'),
                    'attributes' => [
                        'class' => 'barcode-icon',
                    ],
                ],
            ],
        ]);
    }
}
```

Columns
-------

[](#columns)

### Columns Introduction

[](#columns-introduction)

The column definition is a central part of `ZfcDataGrid`, they are used to tell the grid what columns to display and how to display them.

### Column Types

[](#column-types)

#### Select

[](#select)

A minimal column definition looks like this:

```
$this->add([
    'name' => 'Select',
    'construct' => ['name', 'product'],
    'label' => 'Name',
]);
```

##### GROUP\_CONCAT

[](#group_concat)

###### Doctrine

[](#doctrine)

Sometimes we need use built-in database functions for aggregate result. For this purpose we need give `\Zend\Db\Sql\Expression` or `\Doctrine\ORM\Query\Expr\Func` as argument to `Select` column.

```
$this->add([
	'name' => 'Select',
	'construct' => [new \Doctrine\ORM\Query\Expr\Select("GROUP_CONCAT(serial.number)"), 'serial_all'], // Doctrine usage
	// or
	'construct' => [new \Doctrine\ORM\Query\Expr\Func('GROUP_CONCAT', ['serial.number']), 'serial_all'], // Doctrine usage
	'label' => 'Serial Number',
]);
```

**Advanced Usage**
Doctrine **DOES NOT** support expression below and throw Exception `[Syntax Error] line 0, col 218: Error: Unexpected 'NULL'`:

```
$this->add([
	'name' => 'Select',
	// @see https://github.com/doctrine/orm/issues/5801
	'construct' => [new Expr\Func('GROUP_CONCAT', ['CASE WHEN serial.cartItem > 0 THEN serial.number ELSE NULL END']), 'serial_id'],
]);
```

Insteat of example above you can use `NULLIF` operator (which [is supported](https://github.com/doctrine/doctrine2/blob/v2.5.4/lib/Doctrine/ORM/Query/Parser.php#L1936)):

```
$this->add([
   'name' => 'Select',
   'construct' => [new Expr\Select('GROUP_CONCAT(CASE WHEN serial.cartItem > 0 THEN serial.number ELSE NULLIF(1,1) END)'), 'serial_id'],
]);
```

> Notice: Some functions like GROUP\_CONCAT is represented only in one database so Doctrine don't support it by default so you need include [relative package](https://github.com/orocrm/doctrine-extensions) to you project.

###### ZendTable

[](#zendtable)

```
$this->add([
	'name' => 'Select',
	'construct' => [new \Zend\Db\Sql\Expression ('GROUP_CONCAT(serial.number)'), 'serial_all'],
	'label' => 'Serial number',
]);
```

### Column Data Types

[](#column-data-types)

#### Number

[](#number)

The `Number` (original: [`Type\Number`](https://github.com/zfc-datagrid/zfc-datagrid/blob/master/docs/03.%20Columns.md#number)) column data types is used to format numbers using the PHP [*NumberFormatter*](http://php.net/manual/en/class.numberformatter.php), and so you can use the *NumberFormatter* properties in this data type, to do so you create a `Number` object which can takes the following parameters in order:

- Format Style: default `NumberFormatter::DECIMAL`
- Format Type: default `NumberFormatter::TYPE_DEFAULT`
- Locale: Default `Locale::getDefault()`

You can also do the following for this type:

- `'type' => ['prefix' => 'prefix']`
- `'type' => ['suffix' => 'suffix']`
- `'type' => ['attribute' => ['attrName', 'attrValue']]`

A usage Example of this column data type is the following:

```
$this->add([
    'name' => 'Select',
    'construct' => ['weight', 'product'],
    'label' => 'Weight',
    'type' => [
        'name' => 'Number',
        'attribute' => [\NumberFormatter::FRACTION_DIGITS, 2],
        'suffix' => ' kg'
    ],
]);
```

### Column Data Styles

[](#column-data-styles)

#### Align

[](#align)

The `Align` is used to change text direction of rows or columns of the grid, to create the `Align` do the following:

```
$this->add([
    'name' => 'Select',
    'construct' => ['price', 'product'],
    'label' => 'Asin',
    'styles' => [[
        'name' => 'Align',
        'construct' => ['right'],
    ]],
]);
```

or

```
$this->add([
    'name' => 'Select',
    'construct' => ['price', 'product'],
    'label' => 'Asin',
    'styles' => [[
        'name' => 'Align',
        'construct' => [\ZfcDatagrid\Column\Style\Align::$RIGHT],
    ]],
]);
```

If you set column type as `Number` the text direction automatically will be changed to right

```
$this->add([
    'name' => 'Select',
    'construct' => ['price', 'product'],
    'label' => 'Asin',
    'type' => [
        'name' => 'Number'
    ],
]);
```

#### BackgroundColor

[](#backgroundcolor)

The `BackgroundColor` is used to change background color of rows or columns of the grid, to create a `BackgroundColor` do the following:

```
$this->add([
    'name' => 'Select',
    'construct' => ['temperature', 'planet'],
    'label' => 'Temperature',
    'styles' => [[
        'name' => 'BackgroundColor',
        'constuct' => [200, 200, 200]
    ]],
]);
```

where the parameters are the color red green blue values.

To see how to apply style on rows or columns see the \[Applying Style\](#Applying Style) section.

#### Bold

[](#bold)

The `Bold` style simply make the text bold, you can create a bold style like this:

```
$this->add([
    'name' => 'Select',
    'construct' => ['name', 'product'],
    'label' => 'Name',
    'styles' => [[
        'name' => 'Bold'
    ]],
]);
```

To see how to apply style on rows or columns see the \[Applying Style\](#Applying Style) section.

#### Color

[](#color)

The `Color` is used to change the color of rows or columns of the grid, to create a `Color` do the following::

```
$this->add([
    'name' => 'Select',
    'construct' => ['name', 'product'],
    'label' => 'Name',
    'styles' => [[
        'name' => 'Color',
        'consturct' => [200, 200, 200]
    ]],
]);
```

where the parameters are the color red green blue values.

To see how to apply style on rows or columns see the \[Applying Style\](#Applying Style) section.

#### Italic

[](#italic)

The `Italic` style simply make the text italic, you can create an Italic style like this:

```
$this->add([
    'name' => 'Select',
    'construct' => ['name', 'product'],
    'label' => 'Name',
    'styles' => [[
        'name' => 'Italic'
    ]],
]);
```

where the parameters are the color red green blue values.

To see how to apply style on rows or columns see the \[Applying Style\](#Applying Style) section.

#### Strikethrough

[](#strikethrough)

The `Strikethrough` style simply make the text strikethrough, you can create a bold style like this:

```
$this->add([
    'name' => 'Select',
    'construct' => ['name', 'product'],
    'label' => 'Name',
    'styles' => [[
        'name' => 'Strikethrough'
    ]],
]);
```

To see how to apply style on rows or columns see the \[Applying Style\](#Applying Style) section.

#### CSSClass

[](#cssclass)

The `CSSClass` is used to set additional classes attribute of rows or cells of the grid, to create a `CSSClass` do the following::

```
$this->add([
    'name' => 'Select',
    'construct' => ['name', 'product'],
    'label' => 'Name',
    'styles' => [[
        'name' => 'CSSClass',
        'class' => ['text-upper', 'product-name']
    ]],
]);
```

#### Applying Style

[](#applying-style)

- Apply only when the value of the column :product\_price: = 50

```
$this->add([
    'name' => 'Select',
    'construct' => ['price', 'product'],
    'label' => 'Price',
    'styles' => [
        [
            'name' => 'Color',
            'construct' => [\ZfcDatagrid\Column\Style\Color::$RED],
            'byValue' => [[':product_price:', 50, \ZfcDatagrid\Filter::EQUAL]]
        ],
    ],
]);
```

You can add multiple conditions for the style using `ByValue`, and you can set the operator between the multiple conditions to be 'OR' or 'AND' like the following:

- Apply only when the value of the column ':product\_price:' between 20 and 40 (inclusive)

```
$this->add([
    'name' => 'Select',
    'construct' => ['price', 'product'],
    'label' => 'Price',
    'styles' => [
        [
            'name' => 'Color',
            'construct' => [\ZfcDatagrid\Column\Style\Color::$RED],
            'byValueOperator' => 'AND',
            'byValue' => [
                [':product_price:', 20, \ZfcDatagrid\Filter::GREATER_EQUAL],
                [':product_price:', 40, \ZfcDatagrid\Filter::LESS_EQUAL]
            ]
        ],
    ],
]);
```

- Apply only when the value of the column ':order\_quantity:' is greater or equal than the value of the column ':product\_stock:'

```
$this->add([
    'name' => 'Select',
    'construct' => ['quantity', 'order'],
    'label' => 'Price',
    'styles' => [
        [
            'name' => 'Color',
            'construct' => [\ZfcDatagrid\Column\Style\Color::$GREEN],
            'byValue' => [[':order_quantity:', ':product_stock:', \ZfcDatagrid\Filter::LESS_EQUAL]]
        ],
    ],
]);
```

> Notice. This functionality is not full tested!

### Column Data Formatters

[](#column-data-formatters)

#### Link

[](#link)

The Link formatters displays a column content as an HTML link with value and href is the column content, to use it do the following:

```
$this->add([
    'name' => 'Select',
    'construct' => ['asin', 'product'],
    'label' => 'Asin',
    'formatters' => [[
        'name' => 'Link',
        'link' => ['href' => '//www.amazon.de/dp/%s', 'placeholder_column' => 'product_asin']
    ]],
]);
```

You also can pass Column object as 'placeholder\_column'

```
$colId = $this->add([
    'name' => 'Select',
    'construct' => ['id', 'product'],
    'identity' => true,
])->getDataGrid()->getColumnByUniqueId('product_id');

$this->add([
    'name' => 'Select',
    'construct' => ['asin', 'product'],
    'label' => 'Asin',
    'formatters' => [[
        'name' => 'Link',
        'link' => ['href' => '//www.amazon.de/dp/%s', 'placeholder_column' => $colId]
    ]],
]);
```

The link formatter also support multiple placeholders for build url

```
$this->add([
    'name' => 'Select',
    'construct' => ['asin', 'product'],
    'label' => 'Asin',
    'formatters' => [[
        'name' => 'Link',
        'link' => ['href' => '//%s/dp/%s', 'placeholder_column' => ['marketplace_host', 'product_asin']]
    ]],
]);
```

#### Inline

[](#inline)

Inline Formatter allow to show text in one line. This will be replace all ``, `\n` and some other filtration for full compatibility with jqGrid.

```
$this->add([
    'name' => 'Select',
    'construct' => ['description', 'product'],
    'label' => 'Description',
    'formatters' => [[
        'name' => 'Inline',
    ]],
]);
```

#### ExternalLink

[](#externallink)

ExternalLink Formatter allow use full URL without inner `rawurlencode` preparation.

> Preference is given to `Link Formatter`. Use in extreme cases.

```
$this->add([
    'name' => 'Select',
    'construct' => ['url', 'customer'],
    'label' => 'Customer Url',
    'hidden' => true
]);
$this->add([
    'name' => 'Select',
    'construct' => ['name', 'customer'],
    'label' => 'Customer Name',
    'formatters' => [[
        'name' => 'ExternalLink',
        'link' => ['href' => '%s', 'placeholder_column' => 'customer_url']
    ]],
]);
```

### DropDown in search panel

[](#dropdown-in-search-panel)

**Simple**

Just put array with options to `filter_select_options`. Be carefully options are doubled wrapped with array.

```
$this->add([
    'name' => 'Select',
    'construct' => ['accepted', 'question'],
    'label' => 'Accepted',
    'width' => 1,
    'filter_select_options' => [[
        0 => 'No',
        1 => 'Yes'
    ]],
]);
```

**Doctrine**

`filter_select_options` config is based on [`DoctrineModule`](https://github.com/doctrine/DoctrineModule/blob/master/docs/form-element.md) for `Zend\Form` (some options need implementation).

```
$this->add([
    'name' => 'Select',
    'construct' => ['value', 'handbook'],
    'label' => 'MarketOrder Type',
    'filter_select_options' => [
        'options' => [
            'object_manager' => $this->getObjectManager(),
            'target_class' => Handbook::class,
            'identifier' => 'value',
            'property' => 'value',
            'is_method' => true,
            'find_method' => [
                'name' => 'findAllByTypeId',
                'params' => [
                    'type' => 'purposeBid',
                    'field' => 'type'
                ],
            ],
        ],
    ],
]);
```

### DropDown in Edit Record

[](#dropdown-in-edit-record)

**Doctrine**

It's similar to `filter_select_options`. `column_select_options` adds dropdown with selected data to Edit Record form.

```
$this->add([
    'name' => 'Select',
    'construct' => ['value', 'handbook'],
    'label' => 'MarketOrder Type',
    'column_select_options' => [
        'options' => [
            'object_manager' => $this->getObjectManager(),
            'target_class' => Handbook::class,
            'identifier' => 'value',
            'property' => 'value',
            'is_method' => true,
            'find_method' => [
                'name' => 'findAllByTypeId',
                'params' => [
                    'type' => 'purposeBid',
                    'field' => 'type'
                ],
            ],
        ],
    ],
]);
```

### DatePicker in search panel

[](#datepicker-in-search-panel)

At this moment DatePicker require partial settings. You must carefully monitor the date formats.

```
$this->add([
    'name' => 'Select',
    'construct' => ['createdAt', 'question'],
    'label' => 'Date Create',
    'translation_enabled' => false,
    'width' => 1,
    'filter_default_operation' => Filter::LIKE_RIGHT, // LIKE "2018-03-16%"
    'type' => [
        'name' => 'DateTime',
        //'output_pattern' => 'yyyy-MM-dd HH:mm:ss',
        'output_pattern' => 'yyyy-MM-dd',
        'source_dateTime_format' => 'Y-m-d' // this date format will be used in WHERE statment
    ],
    'renderer_parameters' => [
        #['editable', true, 'jqGrid'],
        ['formatter', 'date', 'jqGrid'], // it is important for datepicker
        ['formatoptions', ['srcformat' => 'Y-m-d', 'newformat' => 'Y-m-d'], 'jqGrid'],
        ['searchoptions', ['sopt' => ['eq']], 'jqGrid'],
    ],
]);
```

> Notice. Intl use default ISO date format (RFC 822). Detailed format explanation you can find in [ZF documentation](https://framework.zend.com/manual/1.12/en/zend.date.constants.html#zend.date.constants.selfdefinedformats).

### Grid Data Sorting

[](#grid-data-sorting)

Default grid data sort can be set with `sort_default` option. `ASC` sort order will be applied to column `position` only if any other user filters did not apply before.

```
$this->add([
    'name' => 'Select',
    'construct' => ['position', 'product'],
    'label' => 'Position',
    'sort_default' => [1, 'ASC']
]);
```

Also several default sort orders can be set, simply apply `sort_default` to relative columns

```
$this->add([
    'name' => 'Select',
    'construct' => ['inStock', 'product'],
    'label' => 'Position',
    'sort_default' => [1, 'DESC']
]);
```

```
$this->add([
    'name' => 'Select',
    'construct' => ['position', 'product'],
    'label' => 'Position',
    'sort_default' => [2, 'ASC']
]);
```

### Grid Data Filtering

[](#grid-data-filtering)

Default grid data sort can be set with `filter_default_operation` option.

`like` filter will be applied by default if any other user filters did not apply before.

> Notice! There is [issue](https://github.com/popovserhii/zfc-data-grid/issues/2) which don't allow apply filter from client side.

```
$this->add([
    'name' => 'Select',
    'construct' => ['sku', 'product'],
    'label' => 'SKU',
    'filter_default_operation' => \ZfcDatagrid\Filter::EQUAL
]);
```

Buttons
-------

[](#buttons)

### Buttons Introduction

[](#buttons-introduction)

Custom buttons for `ZfcDataGrid`.

#### Column Chooser

[](#column-chooser)

Object notation:

```
$button = new ColumnChooserButton();
        $button->setTitle('Choose columns');
        $button->setCaption('Choose');
        $button->setOptions([
                'width' => 500,
                'height' => 300,
        ]);
```

Config notation:

```
$this->addButton([
            'name' => 'ColumnChooser',
            'title' => 'Choose columns',
            'caption' => 'Choose',
            'options' => [
                [
                    'width' => 500,
                    'height' => 300,
                ],
            ],
        ]);
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 93.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2906d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7dbdbd3abed25e11e97a69bc611daa3fe33ad5d1805f2fb32d491c888c4dfb51?d=identicon)[Serhii Popov](/maintainers/Serhii%20Popov)

---

Top Contributors

[![popovserhii](https://avatars.githubusercontent.com/u/1991183?v=4)](https://github.com/popovserhii "popovserhii (57 commits)")[![AndreevDev](https://avatars.githubusercontent.com/u/21971400?v=4)](https://github.com/AndreevDev "AndreevDev (2 commits)")[![vladgemtyp](https://avatars.githubusercontent.com/u/12100554?v=4)](https://github.com/vladgemtyp "vladgemtyp (2 commits)")

---

Tags

gridzfc-datagridagerezfc-datagrid factory

### Embed Badge

![Health badge](/badges/popov-zfc-data-grid-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/popov-zfc-data-grid-plugin/health.svg)](https://phpackages.com/packages/popov-zfc-data-grid-plugin)
```

###  Alternatives

[desandro/masonry

Cascading grid layout library

16.7k424.4k1](/packages/desandro-masonry)[kartik-v/yii2-grid

Yii 2 GridView on steroids. Various enhancements and utilities for the Yii 2.0 GridView widget.

5576.6M178](/packages/kartik-v-yii2-grid)[himiklab/yii2-sortable-grid-view-widget

Sortable modification of standard Yii2 GridView widget

80351.1k7](/packages/himiklab-yii2-sortable-grid-view-widget)[codenco-dev/nova-grid-system

A Laravel Nova tool to have a grid system

80300.1k](/packages/codenco-dev-nova-grid-system)[kotchuprik/yii2-sortable-widgets

Implementation Rubaxa/Sortable for Yii2. Sortable grid view inside.

61132.2k6](/packages/kotchuprik-yii2-sortable-widgets)[leantony/laravel-grid

A grid view for laravel, inspired by the yii2 grid widget

9060.2k](/packages/leantony-laravel-grid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
