{"id":20523109,"url":"https://github.com/itstructure/laravel-grid-view","last_synced_at":"2025-04-08T03:16:06.074Z","repository":{"id":56994555,"uuid":"276937458","full_name":"itstructure/laravel-grid-view","owner":"itstructure","description":"This package is to displaying the model data in a Grid table.","archived":false,"fork":false,"pushed_at":"2025-02-28T10:49:20.000Z","size":541,"stargazers_count":24,"open_issues_count":5,"forks_count":9,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T10:02:09.353Z","etag":null,"topics":["filters","formatters","grid","grid-table","laravel","laravel-grid","search-filters","table","view"],"latest_commit_sha":null,"homepage":"https://pack-develop.info/en/product/laravel-grid-view","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itstructure.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-03T15:57:34.000Z","updated_at":"2025-02-28T10:49:01.000Z","dependencies_parsed_at":"2024-01-03T06:39:15.752Z","dependency_job_id":"31150015-85cc-4df2-9cc1-489085d6022b","html_url":"https://github.com/itstructure/laravel-grid-view","commit_stats":{"total_commits":15,"total_committers":1,"mean_commits":15.0,"dds":0.0,"last_synced_commit":"b7e2c97398dd871473331b343c705181d76dbd52"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Flaravel-grid-view","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Flaravel-grid-view/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Flaravel-grid-view/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itstructure%2Flaravel-grid-view/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itstructure","download_url":"https://codeload.github.com/itstructure/laravel-grid-view/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767236,"owners_count":20992548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["filters","formatters","grid","grid-table","laravel","laravel-grid","search-filters","table","view"],"created_at":"2024-11-15T22:38:01.664Z","updated_at":"2025-04-08T03:16:06.065Z","avatar_url":"https://github.com/itstructure.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laravel Grid View\n\n[![Latest Stable Version](https://poser.pugx.org/itstructure/laravel-grid-view/v/stable)](https://packagist.org/packages/itstructure/laravel-grid-view)\n[![Latest Unstable Version](https://poser.pugx.org/itstructure/laravel-grid-view/v/unstable)](https://packagist.org/packages/itstructure/laravel-grid-view)\n[![License](https://poser.pugx.org/itstructure/laravel-grid-view/license)](https://packagist.org/packages/itstructure/laravel-grid-view)\n[![Total Downloads](https://poser.pugx.org/itstructure/laravel-grid-view/downloads)](https://packagist.org/packages/itstructure/laravel-grid-view)\n[![Build Status](https://scrutinizer-ci.com/g/itstructure/laravel-grid-view/badges/build.png?b=master)](https://scrutinizer-ci.com/g/itstructure/laravel-grid-view/build-status/master)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/itstructure/laravel-grid-view/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/itstructure/laravel-grid-view/?branch=master)\n\n## Introduction\n\nThis package is to displaying the model data in a Grid table.\n\n![Grid view appearance](https://github.com/itstructure/laravel-grid-view/blob/master/laravel_grid_view_appearance_en.png)\n\n## Requirements\n- laravel 5.5+ | 6+ | 7+ | 8+ | 9+ | 10+ | 11+ | 12+\n- Bootstrap 4 for styling\n- JQuery\n- php \u003e= 7.1\n- composer\n\n## Installation\n\n### General from remote repository\n\nRun the composer command:\n\n`composer require itstructure/laravel-grid-view \"^1.1.7\"`\n\n### If you are testing this package from a local server directory\n\nIn application `composer.json` file set the repository, as in example:\n\n```json\n\"repositories\": [\n    {\n        \"type\": \"path\",\n        \"url\": \"../laravel-grid-view\",\n        \"options\": {\n            \"symlink\": true\n        }\n    }\n],\n```\n\nHere,\n\n**../laravel-grid-view** - directory path, which has the same directory level as application and contains Grid View package.\n\nThen run command:\n\n`composer require itstructure/laravel-grid-view:dev-master --prefer-source`\n\n### Publish files (Not necessary)\n\n- To publish views run command:\n\n    `php artisan grid_view:publish --only=views`\n    \n    It stores view files to `resources/views/vendor/grid_view` folder.\n    \n- To publish translations run command:\n                \n    `php artisan grid_view:publish --only=lang`\n    \n    It stores translation files to `resources/lang/vendor/grid_view` folder.\n    \n- To publish all parts run command without `only` argument:\n\n    `php artisan grid_view:publish`\n    \n    Else you can use `--force` argument to rewrite already published files.\n\n## Where this is already used (my packages)\n\n- [RBAC Manager](https://github.com/itstructure/laravel-rbac)\n\n- [Media File Uploader](https://github.com/itstructure/laravel-media-file-uploader)\n\nYou can see this packages above as examples.\n\n## Usage\n\nMake sure you use a **Bootstrap 4** for styling and **JQuery** in your application.\n\n### Controller part\n\nMust use `EloquentDataProvider` to insert data in to the view template.\n\nFor `EloquentDataProvider` class constructor use a model query object.\n\nExample:\n\n```php\nnamespace App\\Http\\Controllers;\n\nuse Itstructure\\GridView\\DataProviders\\EloquentDataProvider;\n```\n\n```php\nclass ExampleController extends Controller\n{\n    public function example()\n    {\n        $dataProvider = new EloquentDataProvider(ExampleModel::query());\n        return view('example-view', [\n            'dataProvider' =\u003e $dataProvider\n        ]);\n    }\n}\n```\n\n### View template part\n\nUse `@gridView()` directive with config array in a blade view template.\n\n#### Simple quick usage\n\nYou can simply set columns to display as **string** format in `columnFields` array.\n\nNote:\n\nThere search filter fields are displayed automatically. By default **text** form field filters are used.\n\nIf you don't want to use search filters, set `useFilters` = **false**.\n\n```php\n@php\n$gridData = [\n    'dataProvider' =\u003e $dataProvider,\n    'title' =\u003e 'Panel title',\n    'useFilters' =\u003e false,\n    'columnFields' =\u003e [\n        'id',\n        'active',\n        'icon',\n        'created_at'\n    ]\n];\n@endphp\n```\n\n```php\n@gridView($gridData)\n```\n\nAlternative variant without a blade directive:\n\n```php\n{!! grid_view([\n    'dataProvider' =\u003e $dataProvider,\n    'useFilters' =\u003e false,\n    'columnFields' =\u003e [\n        'id',\n        'active',\n        'icon',\n        'created_at'\n    ]\n]) !!}\n```\n\n#### Setting custom options\n\n##### Main columns\n\nSimple example:\n\n```php\n@gridView([\n    'dataProvider' =\u003e $dataProvider,\n    'columnFields' =\u003e [\n        [\n            'label' =\u003e 'First Name', // Column label.\n            'attribute' =\u003e 'first_name', // Attribute, by which the row column data will be taken from a model.\n        ],\n        [\n            'label' =\u003e 'Last Name',\n            'value' =\u003e function ($row) {\n                return $row-\u003elast_name;\n            }\n            'sort' =\u003e 'last_name' // To sort rows. Have to set if an 'attribute' is not defined for column.\n        ],\n    ]\n])\n```\n\n##### Special columns\n\nBesides main columns, there can be the next special columns:\n\n- `ActionColumn` - is for displaying Buttons to **view**, **edit** and **delete** rows. \n\n    Set `'class' =\u003e Itstructure\\GridView\\Columns\\ActionColumn::class` in column option\n    \n    There are the next required `actionTypes`:\n    - **view** - makes a link for viewing. Default url scheme: `url()-\u003ecurrent()  . '/' . $row-\u003eid . '/delete'`.\n    - **edit** - makes a link for edition. Default url scheme: `url()-\u003ecurrent()  . '/' . $row-\u003eid . '/edit'`.\n    - **delete** - makes a link for deletion. Default url scheme: `url()-\u003ecurrent()  . '/' . $row-\u003eid . '/delete'`.\n    \n    They can be simple **strings**, **arrays** or **callbacks**.\n    \n    For array format it is necessary set `class`. And optional: `url`, `htmlAttributes`.\n    \n    By **callback** you can change urls to your routes.\n    \n    Simple example for a column config:\n    \n    ```php\n    @gridView([\n        'dataProvider' =\u003e $dataProvider,\n        'columnFields' =\u003e [\n            [\n                'label' =\u003e 'Actions', // Optional\n                'class' =\u003e Itstructure\\GridView\\Columns\\ActionColumn::class, // Required\n                'actionTypes' =\u003e [ // Required\n                    'view',\n                    'edit' =\u003e function ($data) {\n                        return '/admin/pages/' . $data-\u003eid . '/edit';\n                    },\n                    [\n                        'class' =\u003e Itstructure\\GridView\\Actions\\Delete::class, // Required\n                        'url' =\u003e function ($data) { // Optional\n                            return '/admin/pages/' . $data-\u003eid . '/delete';\n                        },\n                        'htmlAttributes' =\u003e [ // Optional\n                            'target' =\u003e '_blank',\n                            'style' =\u003e 'color: yellow; font-size: 16px;',\n                            'onclick' =\u003e 'return window.confirm(\"Are you sure you want to delete?\");'\n                        ]\n                    ]\n                ]\n            ]\n        ]\n    ])\n    ```\n\n- `CheckboxColumn` - is for displaying Checkboxes to multiple choose the rows.\n\n    Set `'class' =\u003e Itstructure\\GridView\\Columns\\CheckboxColumn::class` in column option\n    \n    There are the next required options:\n    - **field** - is for a `name` checkbox input attribute. It is rendered as an array `name=\"{{ $field }}[]\"`.\n    - **attribute** - is for a `value` checkbox input attribute. It is rendered as: `value=\"$row-\u003e{$this-\u003eattribute}\"`.\n    \n    Simple example for a column config:\n    \n    ```php\n    @gridView([\n        'dataProvider' =\u003e $dataProvider,\n        'columnFields' =\u003e [\n            [\n                'class' =\u003e Itstructure\\GridView\\Columns\\CheckboxColumn::class,\n                'field' =\u003e 'delete',\n                'attribute' =\u003e 'id'\n            ]\n        ]\n    ])\n    ```\n\n##### Filters\n\nThere are the next filter's variants:\n\n- Column option to switch off the filter:\n\n    ```php\n    'filter' =\u003e false\n    ```\n\n- `TextFilter` - is a default filter, which renders a text form field to search, using column attribute.\n\n- `DropdownFilter` - is a filter, which renders `\u003cselect\u003e` html tag.\n\n    Set the next as column option:\n    \n    ```php\n    @gridView([\n        'dataProvider' =\u003e $dataProvider,\n        'columnFields' =\u003e [\n            [\n                'attribute' =\u003e 'example_attribute',\n                'filter' =\u003e [\n                    'class' =\u003e Itstructure\\GridView\\Filters\\DropdownFilter::class,\n                    'data' =\u003e ['key' =\u003e 'value', 'key' =\u003e 'value'] // Array keys are for html \u003coption\u003e tag values, array values are for titles.\n                ]\n            ]\n        ]\n    ])\n    ```\n    \n    If `attribute` is not defined for column or you want to set a special filter field name:\n    \n    ```php\n    @gridView([\n        'dataProvider' =\u003e $dataProvider,\n        'columnFields' =\u003e [\n            [\n                'filter' =\u003e [\n                    'class' =\u003e Itstructure\\GridView\\Filters\\DropdownFilter::class,\n                    'name' =\u003e 'example_name',\n                    'data' =\u003e ['key' =\u003e 'value', 'key' =\u003e 'value'] // Array keys are for html \u003coption\u003e tag values, array values are for titles.\n                ]\n            ]\n        ]\n    ])\n    ```\n    \n##### Formatters\n\nThere are the next formatter keys:\n\n- **html** - is for passing a row content with html tags.\n- **image** - is for inserting a row data in to `src` attribute of `\u003cimg\u003e` tag.\n- **text** - applies `strip_tags()` for a row data.\n- **url** - is for inserting a row data in to `href` attribute of `\u003ca\u003e` tag.\n\nFor that keys there are the next formatters:\n\n- `HtmlFormatter`\n- `ImageFormatter`\n- `TextFormatter`\n- `UrlFormatter`\n\nAlso you can set formatter with some addition options. See the next simple example:\n\n```php\n@gridView([\n    'dataProvider' =\u003e $dataProvider,\n    'columnFields' =\u003e [\n        [\n            'attribute' =\u003e 'url',\n            'format' =\u003e [\n                'class' =\u003e Itstructure\\GridView\\Formatters\\UrlFormatter::class,\n                'title' =\u003e 'Source',\n                'htmlAttributes' =\u003e [\n                    'target' =\u003e '_blank'\n                ]\n            ]\n        ],\n        [\n            'attribute' =\u003e 'content',\n            'format' =\u003e 'html'\n        ]\n    ]\n])\n```\n\n##### Existing form areas and main buttons\n\n![Grid view forms](https://github.com/itstructure/laravel-grid-view/blob/master/laravel_grid_view_forms_en.png)\n\nThere are two main form areas:\n\n- `grid_view_filters_form`\n\n    Two buttons affect search request submission:\n    \n    - **Search**. You can change a button label by option: `searchButtonLabel`.\n    - **Reset**. You can change a button label by option: `resetButtonLabel`.\n    \n    If `useFilters` = **false**, these buttons will not be displayed.\n\n- `grid_view_rows_form`\n\n    You can set a specific `action` attribute value by option `rowsFormAction`.\n    \n    One button affect a main submit request:\n    \n    - **Send**. You can change a button label by option: `sendButtonLabel`.\n    \n        Note! This button will be displayed under one of two conditions:\n        - There is a checkbox column.\n        - Option `useSendButtonAnyway` = **true**.\n\n##### Complex extended example\n\n```php\n@php\n$gridData = [\n    'dataProvider' =\u003e $dataProvider,\n    'paginatorOptions' =\u003e [ // Here you can set some options of paginator Illuminate\\Pagination\\LengthAwarePaginator, used in a package.\n        'pageName' =\u003e 'p'\n    ],\n    'rowsPerPage' =\u003e 5, // The number of rows in one page. By default 10.\n    'title' =\u003e 'Panel title', // It can be empty ''\n    'strictFilters' =\u003e true, // If true, then a searching by filters will be strict, using an equal '=' SQL operator instead of 'like'.\n    'rowsFormAction' =\u003e '/admin/pages/deletion', // Route url to send slected checkbox items for deleting rows, for example.\n    'useSendButtonAnyway' =\u003e true, // If true, even if there are no checkbox column, the main send button will be displayed.\n    'searchButtonLabel' =\u003e 'Find',\n    'columnFields' =\u003e [\n        [\n            'attribute' =\u003e 'id', // REQUIRED if value is not defined. Attribute name to get row column data.\n            'label' =\u003e 'ID', // Column label.\n            'filter' =\u003e false, // If false, then column will be without a search filter form field.,\n            'htmlAttributes' =\u003e [\n                'width' =\u003e '5%' // Width of table column.\n            ]\n        ],\n        [\n            'label' =\u003e 'Active', // Column label.\n            'value' =\u003e function ($row) { // You can set 'value' as a callback function to get a row data value dynamically.\n                return '\u003cspan class=\"icon fas '.($row-\u003eactive == 1 ? 'fa-check' : 'fa-times').'\"\u003e\u003c/span\u003e';\n            },\n            'filter' =\u003e [ // For dropdown it is necessary to set 'data' array. Array keys are for html \u003coption\u003e tag values, array values are for titles.\n                'class' =\u003e Itstructure\\GridView\\Filters\\DropdownFilter::class, // REQUIRED. For this case it is necessary to set 'class'.\n                'name' =\u003e 'active', // REQUIRED if 'attribute' is not defined for column.\n                'data' =\u003e [ // REQUIRED.\n                    0 =\u003e 'No active',\n                    1 =\u003e 'Active',\n                ]\n            ],\n            'format' =\u003e 'html', // To render column content without lossless of html tags, set 'html' formatter.\n            'sort' =\u003e 'active' // To sort rows. Have to set if an attribute is not defined for column.\n        ],\n        [\n            'label' =\u003e 'Icon', // Column label.\n            'value' =\u003e function ($row) { // You can set 'value' as a callback function to get a row data value dynamically.\n                return $row-\u003eicon;\n            },\n            'filter' =\u003e false, // If false, then column will be without a search filter form field.\n            'format' =\u003e [ // Set special formatter. If $row-\u003eicon value is a url to image, it will be inserted in to 'src' attribute of \u003cimg\u003e tag.\n                'class' =\u003e Itstructure\\GridView\\Formatters\\ImageFormatter::class, // REQUIRED. For this case it is necessary to set 'class'.\n                'htmlAttributes' =\u003e [ // Html attributes for \u003cimg\u003e tag.\n                    'width' =\u003e '100'\n                ]\n            ]\n        ],\n        'created_at', // Simple column setting by string.\n        [ // Set Action Buttons.\n            'class' =\u003e Itstructure\\GridView\\Columns\\ActionColumn::class, // REQUIRED.\n            'actionTypes' =\u003e [ // REQUIRED.\n                'view',\n                'edit' =\u003e function ($data) {\n                    return '/admin/pages/' . $data-\u003eid . '/edit';\n                },\n                [\n                    'class' =\u003e Itstructure\\GridView\\Actions\\Delete::class, // REQUIRED\n                    'url' =\u003e function ($data) {\n                        return '/admin/pages/' . $data-\u003eid . '/delete';\n                    },\n                    'htmlAttributes' =\u003e [\n                        'target' =\u003e '_blank',\n                        'style' =\u003e 'color: yellow; font-size: 16px;',\n                        'onclick' =\u003e 'return window.confirm(\"Sure to delete?\");'\n                    ]\n                ]\n            ]\n        ],\n        [\n            // For this case checkboxes will be rendered according with: \u003cinput type=\"checkbox\" name=\"delete[]\" value=\"{{ $row-\u003eid }}\" /\u003e\n            'class' =\u003e Itstructure\\GridView\\Columns\\CheckboxColumn::class, // REQUIRED.\n            'field' =\u003e 'delete', // REQUIRED.\n            'attribute' =\u003e 'id' // REQUIRED.\n            'display' =\u003e function ($row) {\n                return {...condition to return true for displaying...};\n            }\n        ]\n    ]\n];\n@endphp\n```\n\n```php\n@gridView($gridData)\n```\n\n## License\n\nCopyright © 2020-2025 Andrey Girnik girnikandrey@gmail.com.\n\nLicensed under the [MIT license](http://opensource.org/licenses/MIT). See LICENSE.txt for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitstructure%2Flaravel-grid-view","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitstructure%2Flaravel-grid-view","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitstructure%2Flaravel-grid-view/lists"}