PHPackages                             hthang369/laravel-grid - 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. hthang369/laravel-grid

ActiveLibrary

hthang369/laravel-grid
======================

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

1.0.0(5y ago)018MITPHP

Since Mar 19Pushed 5y ago1 watchersCompare

[ Source](https://github.com/hthang369/laravel-grid)[ Packagist](https://packagist.org/packages/hthang369/laravel-grid)[ Docs](https://github.com/hthang369/laravel-grid)[ RSS](/packages/hthang369-laravel-grid/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (1)Dependencies (13)Versions (2)Used By (0)

Laravel grid
============

[](#laravel-grid)

Live demo: [here](http://laravel-grid.herokuapp.com/)

[![Build Status](https://camo.githubusercontent.com/4dc0e0d724f0bc60c5da6c3a3d598c1b0ed40b0ff0fb4d76a2b5d25c94bf6172/68747470733a2f2f7472617669732d63692e6f72672f6c65616e746f6e792f6c61726176656c2d677269642e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/leantony/laravel-grid)[![Latest Stable Version](https://camo.githubusercontent.com/060d0302c1bbc292c8a479ff98ac70f1908ddecbe746fde38302485d36407f1b/68747470733a2f2f706f7365722e707567782e6f72672f6c65616e746f6e792f6c61726176656c2d677269642f762f737461626c65)](https://packagist.org/packages/leantony/laravel-grid)[![Latest Unstable Version](https://camo.githubusercontent.com/42c771c9fc260a47ccee804e6fb0113c3a4c27ee68226a2b3417a60e40ec116c/68747470733a2f2f706f7365722e707567782e6f72672f6c65616e746f6e792f6c61726176656c2d677269642f762f756e737461626c65)](https://packagist.org/packages/leantony/laravel-grid)[![Total Downloads](https://camo.githubusercontent.com/913dc10fc6212bc6ec493e4fea88f7c60ed88fce43c218c9b8fbfd719dfa5529/68747470733a2f2f706f7365722e707567782e6f72672f6c65616e746f6e792f6c61726176656c2d677269642f646f776e6c6f616473)](https://packagist.org/packages/leantony/laravel-grid)

This package allows rendering of data via a tabular format (grid). The grid uses bootstrap classes to style the `table` elements. Icons used are from `font-awesome`, and most of the functionality is insipred by the yii2's framework's gridview widget.

Requirements
------------

[](#requirements)

- Laravel 5.5+
- Bootstrap 4 (for the styling)
- Font awesome (for icons)
- Jquery (required by bootstrap and the package's javascript)
- Jquery pjax (quickly view data without having to reload the page). Note that you'll need to [create the middleware on your own](https://gist.github.com/JeffreyWay/8526696b6f29201c4e33)
- [Date picker](https://github.com/dangrossman/bootstrap-daterangepicker.git) (optional - for the single date &amp; date range filters)

> **Note that from version 2.0.2 onwards, you'll need the package [barryvdh/laravel-dompdf](https://github.com/barryvdh/laravel-dompdf) to export data from the grid as PDF**

Getting started
===============

[](#getting-started)

Install
-------

[](#install)

The package is available on packagist. Just run;

```
composer install leantony/laravel-grid "~2.0"
```

> For bootstrap 3 support, consider installing version `1.0`. Version 1.0 though is pretty not much updated at this point, so may lack some features.

If you can't wait for a release inorder to try any fixes, or the latest features, just run;

```
composer install leantony/laravel-grid "2.0.x-dev"
```

Publish assets
--------------

[](#publish-assets)

The grid comes with a config file, CSS assets, JS assets and view files. The command below should allow you to publish them.

```
php artisan vendor:publish --provider="Leantony\Grid\Providers\GridServiceProvider"
```

> You can also choose to publish the assets and views separately by passing the `--tag` argument to the command. For the argument values, try `assets`, `views`, `config` for js|css assets, views and config respectively.

Add/Customize your layout
-------------------------

[](#addcustomize-your-layout)

Be sure to also include the necessary javascript and css assets on your layout. An example layout is as shown below;

```

    My application

            My appliation

        @yield('content')

@include('leantony::modal.container')

    // send csrf token (see https://laravel.com/docs/5.6/csrf#csrf-x-csrf-token) - this is required
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    // for the progress bar (required for progress bar functionality)
    $(document).on('pjax:start', function () {
        NProgress.start();
    });
    $(document).on('pjax:end', function () {
        NProgress.done();
    });

@stack('grid_js')

```

Creating grids
--------------

[](#creating-grids)

A laravel command is available to make it easy to create grids. It's usage is as shown below;

```
php artisan make:grid --model="{modelClass}"
```

Just make sure you replace `{modelClass}` with your actual `eloquent` model class. E.g

```
php artisan make:grid --model="App\User"
```

Once this is run, a grid will be generated. Default namespace for grid generation is `App\Grids`. Once the generation of the grid is done, you can add add it in your controller like this;

```
class UsersController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @param UsersGridInterface $usersGrid
     * @param Request $request
     * @return \Illuminate\Http\Response
     */
    public function index(UsersGridInterface $usersGrid, Request $request)
    {
        // the 'query' argument needs to be an instance of the eloquent query builder
        // you can load relationships at this point
        return $usersGrid
                    ->create(['query' => User::query(), 'request' => $request])
                    ->renderOn('welcome'); // render the grid on the welcome view
    }
}
```

Just make sure that you do not call `->get()` on the query.

If you inject the interface on the controller, just make sure that you add a binding to the service provider. Like this;

```
     /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(UsersGridInterface::class, UsersGrid::class);
    }
```

Otherwise, you can also instantiate the grid class like any other class then inject any constructor dependencies you might need.

```
    /**
     * Display a listing of the resource.
     *
     * @param Request $request
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $user = $request->user();
        return (new UsersGrid(['user' => $user])) // you can then use it as $this->user within the class. It's set implicitly using the __set() call
                    ->create(['query' => User::query(), 'request' => $request])
                    ->renderOn('welcome');
    }
```

If you need to pass extra data to the view specified, you just need to pass the data as arguments, just as you do normally on any other laravel controller;

```
    /**
     * Display a listing of the resource.
     *
     * @param Request $request
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $data = 'hello world';

        return (new UsersGrid())
                    ->create(['query' => User::query(), 'request' => $request])
                    ->renderOn('welcome', compact('data'));
    }
```

For eloquent relationships, its basically the same approach. Like this;

```
class UsersController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @param UsersGridInterface $usersGrid
     * @param Request $request
     * @return \Illuminate\Http\Response
     */
    public function index(UsersGridInterface $usersGrid, Request $request)
    {
        // load relationships
        $query = User::with(['posts', 'activities'])
        return $usersGrid
                    ->create(['query' => $query, 'request' => $request])
                    ->renderOn('welcome');
    }
}
```

And once again, just make sure that you do not call `->get()` on the query.

Rendering the grid
------------------

[](#rendering-the-grid)

To display your grid, simply add this to your view. Or any appropriate variable you passed into the `renderOn` method.

```
{!! $grid !!}
```

For a quick demonstration, be sure to check out the demo [here](http://laravel-grid.herokuapp.com/). The demo's source code is also [available on github](https://github.com/leantony/laravel-grid-app).

Updating local JS and CSS assets after package updates
------------------------------------------------------

[](#updating-local-js-and-css-assets-after-package-updates)

When the package is updated, it is highly likely that you will also need to update the javascript assets. To do that, run this command below after an update;

```
php artisan vendor:publish --provider="Leantony\Grid\Providers\GridServiceProvider" --tag=assets --force
```

You can also place this command in composer so that it is executed automatically on each update run. Like this;

```
// ... composer config
"post-autoload-dump": [
    "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
    "@php artisan package:discover",
    "@php artisan vendor:publish --provider=\"Leantony\\Grid\\Providers\\GridServiceProvider\" --tag=assets --force"
]
```

Next up
=======

[](#next-up)

[Rendering the grid](docs/rendering.md)

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

1880d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/872eea0937838030e502b74ade50d43957e94f89dbbcff6ea070abeac579c921?d=identicon)[hthang789](/maintainers/hthang789)

---

Top Contributors

[![hthang369](https://avatars.githubusercontent.com/u/20695029?v=4)](https://github.com/hthang369 "hthang369 (3 commits)")

---

Tags

laravelgridlaravel 5laravel5bootstrappjaxlaravel6laravel8laravel7leantonylaravel-grid

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/hthang369-laravel-grid/health.svg)

```
[![Health](https://phpackages.com/badges/hthang369-laravel-grid/health.svg)](https://phpackages.com/packages/hthang369-laravel-grid)
```

###  Alternatives

[leantony/laravel-grid

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

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

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.5k25.9M107](/packages/laravel-cashier)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k12.1M99](/packages/laravel-pulse)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[yadahan/laravel-authentication-log

Laravel Authentication Log provides authentication logger and notification for Laravel.

416632.8k5](/packages/yadahan-laravel-authentication-log)[salmanzafar/laravel-mqtt

A simple Laravel Library to connect/publish/subscribe to MQTT broker

106153.1k1](/packages/salmanzafar-laravel-mqtt)

PHPackages © 2026

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