Datatable for Laravel 5. Con la ayuda de la clase Datatable para Laravel 5, podrán facilmente reutilizar y modificar datatables con consultas ajax. Por default, se utiliza con Bootstrap 3, pero puede ser utilizado sin ello.
El log de cambios puede encontrarse aquí
###Instalación
{
"require": {
"saguajardo/datatable": "dev-master"
}
}
Ejecutar composer update
Luego agregar la siguientes línea en el archivo config/app.php
, en el apartado providers
'providers' => [
// ...
Saguajardo\Datatable\DatatableServiceProvider::class,
]
Ahora agregar los Facades (también en el archivo config/app.php
), apartado aliases
'aliases' => [
// ...
'Datatable'=> Saguajardo\Datatable\Facades\DatatableFacade::class,
'DatatableBuilder'=> Saguajardo\Datatable\DatatableBuilder::class,
]
Crear la clase datatables es facil.
Se debe crear el archivo PruebaDatatable.php en el directorio app/Datatables/
con el siguiente contenido:
<?php
namespace App\Datatables;
use Saguajardo\Datatable\Datatable;
class PruebaDatatable extends Datatable
{
public function buildDatatable()
{
$this
->add('Descripción')
->add('Perfil')
->add('Acción');
}
}
Nota: El directorio puede ser cualquiera que ustedes prefieran. En mi caso, lo cree dentro del directorio app/
Luego de esto, instanciar la clase dentro del controlador y enviarselo a la vista:
<?php namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Saguajardo\Datatable\DatatableBuilder;
class PruebaController extends Controller {
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//Construct WelcomeController
}
public function prueba(DatatableBuilder $datatableBuilder) {
// Creo el datatable
$datatable = $datatableBuilder->create(\App\Datatables\PruebaDatatable::class, [
'method' => 'GET',
'url' => 'listado',
'data' => ['id' => 'usuariosTable',
'fields' => [
'data.descripcion',
'data.perfil',
'createEditDeleteButton(data.id)',
]
],
]);
return view('prueba', compact('datatable'));
}
public function listado() {
$array[] = array(
"id" => 10,
"descripcion" => "Prueba",
"perfil" => "Admin",
"id_perfil" => 20,
);
echo json_encode(array(
"data" =>
$array
));
}
}
Crear las rutas
// app/Http/routes.php
Route::get('prueba', array('as' => 'prueba', 'uses' => 'PruebaController@prueba'));
Route::get('listado', array('as' => 'listado', 'uses' => 'PruebaController@listado'));
Imprimir el Datatable en la vista con el Helper Datatable()
:
<!-- resources/views/prueba.blade.php -->
@extends('app')
@section('content')
{!! Datatable($datatable) !!}
@endsection
Accedemos a la url /prueba
; El código anterior generará lo siguiente:
Para publicar los archivos de configuración se debe ejecutar la siguiente instrucción con artisan:
php artisan vendor:publish
Esto creará el archivo config/datatable.php
(desde donde se podrán modificar las configuraciones de la clase) y las vistas utilizadas en el directorio resources/views/vendor/datatable/
. En ellas se podrán modificar los templates del datatable a su gusto.