Useful package for managing your database from an admin panel.
From the command line, run:
composer require devmi/datatables
If you're using laravel >5.5 skip to the next step.
Open config/app.php and within the providers array:
Devmi\Datatables\DataTableServiceProvider::class
For this package to function properly, you must create a controller extends our base DataTableController.
e.g:
php artisan make:controller UserController
then, you must implement the abstract builder
function
use App\User;
use Devmi\Datatables\Controllers\DatatableController;
class UserController extends DatatableController
{
public function builder()
{
return User::query();
}
//...
}
Simply add resources route.
Open routes/web.php
, add:
Route::resource('users', 'UserController');
Now you must publish the vue compenents and register it in order to use it.
php artisan vendor:publish --tag=devmi
open resources/assets/js/app.js
and register the component
Vue.component('data-table', require('./vendor/devmi/DataTable.vue'));
you find the file under resources/assets/js/vendor/devmi/DataTable.vue
, you customize it.
Now you can visit www.domain.com/admin/users
'users' is you table name.
- Repeat step 3 & step 4 for your other model.
You must to install ES6 spread operator in order to use this package properly
npm install --save-dev babel-plugin-transform-object-rest-spread
then, create .babelrc file from you command line
echo '{ "plugins": ["transform-object-rest-spread"] }' > .babelrc
Now compile your asset running
npm run dev
You can override the following functions and variables for your need
/**
* Allows admin to add new record on database
*/
$allowCreation: Bool
public function getDisplayableColumns()
{
return ['columns', 'you', 'need', 'to', 'display'];
}
public function getUpdatableColumns()
{
return ['updateable', 'columns'];
}
public function store(Request $request)
{
// Add validation for example
parent::store($request);
}
public function update($id, Request $request)
{
// Add validation for example
parent::update($id, $request);
}