Skip to content

Vue-good-table wrapper for Laravel. Server side tables without pain.

License

Notifications You must be signed in to change notification settings

underwear/laravel-vue-good-table

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

laravel-vue-good-table

Customizable table tool for Laravel, uses powerful vue-good-table. Server side tables without pain.

Supports pagination, filtering, searching, sorting. Inspired by Laravel Nova :)

til

Reqs

  • Laravel 5.6+ or Laravel 6, Laravel 7, Laravel 8, Laravel 9
  • Using Vue.js in your project

Usage example

  1. Use InteractsWithVueGoodTable trait in your controller and implement two methods: getColumns() and getQuery().
  2. Register two new routes.
  3. Use Vue component laravel-vue-good-table wherever you want.

Controller:

namespace App\Http\Controllers;

use LaravelVueGoodTable\InteractsWithVueGoodTable;
use LaravelVueGoodTable\Columns\Column;
use LaravelVueGoodTable\Columns\Date;
use Illuminate\Http\Request;
use App\User;

class TestController extends Controller
{
    use InteractsWithVueGoodTable;

    /**
     * Get the query builder
     * 
     * @param Request $request
     *
     * @return Illuminate\Database\Eloquent\Builder
     */
    protected function getQuery(Request $request)
    {
        return User::query();
    }

    /**
     * Get the columns displayed in the table
     *
     * @return array
     */
    protected function getColumns(): array
    {
        return [
            Text::make('ID', 'id')
                ->sortable()
                ->searchable(),
                
            Text::make('Name', 'name')
                ->searchable(),
                
            Text::make('E-mail', 'email')
                ->searchable(),
                
            Date::make('Created At', 'created_at')
                ->sortable()
                ->dateOutputFormat('dd.MM.yyyy HH:mm:ss'),
        ];
    }
}

Routes:

Route::get('/lvgt/config', 'TestController@handleConfigRequest');
Route::get('/lvgt/data', 'TestController@handleDataRequest');

Blade/HTML:

<div id="vue">
    <laravel-vue-good-table data-url="/lvgt/data" config-url="/lvgt/config"/>
</div>

Installation

composer require underwear/laravel-vue-good-table

See the full Installation Guide in DOCUMENTATION.md

Documentation

See DOCUMENTATION.md

Contributing

Contributions are welcome!

Credits

License

The MIT License (MIT). Please see License File for more information.

About

Vue-good-table wrapper for Laravel. Server side tables without pain.

Resources

License

Stars

Watchers

Forks

Packages

No packages published