rep98 / dt-laravel-eloquent
Simple DataTable para Laravel Eloquent
Installs: 7
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/rep98/dt-laravel-eloquent
Requires
- php: ^8.2
- barryvdh/laravel-dompdf: ^3.1
- illuminate/config: ^11.0|^12.0
- illuminate/console: ^11.0|^12.0
- illuminate/database: ^11.0|^12.0
- illuminate/filesystem: ^11.0|^12.0
- illuminate/log: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
- maatwebsite/excel: ^3.1
Requires (Dev)
- orchestra/testbench: ^7.35|^8.15|^9.0
- phpunit/phpunit: ^10.4|^11.5
README
Un simple, pero potente DataTable hecho para colecciones y eloquent de Laravel, su integración y uso es muy sencillo.
Instalación
Primero integramos el componente a nuestro proyecto
composer require rep98/dt-laravel-eloquent
luego publicamos el proveedor
php artisan vendor:publish --provider="DTLaravelEloquent\RDataTableServiceProvider"
Y, por último, de forma opcional, podemos ejecutar para instalar el componente
php artisan RDT:install
Podemos pasar la bandera --raw si queremos modificar el js o css, [se recomienda tener npm]
Uso
use DTLaravelEloquent\RDT; function index() { $dt = RDT::make(User::all()) ->excludeFields(["password"]) ->render() return view("auth.users", compact("dt")) }
en Blade
{{-- para el export --}} <meta name="csrf-token" content="{{ csrf_token() }}"> {{-- la tabla --}} {!! $dt !!}
¿Simple no?
Configuración
Este proyecto usa fiduswriter/simple-datatables para el manejo efectivo de tablas, por ello sus configuraciones se ajustan a este componente
- RDataTablees el archivo de configuración base
- RDTOptionses la clase encargada de administrar las configuraciones y hacerlas compatibles como el js- fiduswriter/simple-datatables
Opciones de configuración
Como he mencionado, todas las opciones de configuración son obtenidas del componente fiduswriter/simple-datatables con algunos ajustes y excepciones.
A continuación explicaré los ajustes y excepciones si desea conocer el resto de opciones, visite Opciones de Simple Datatables
| Opciones | valor por defecto | Descripción | 
|---|---|---|
| options | array | Opciones de configuración del componente js | 
| export | array | Opciones de exportación | 
Opciones de Exportación
- export.nameContiene el nombre del archivo generado cuando se usa- Excelo- PDF.
Opciones de Configuración del Componente JS
| Opciones | valor por defecto | Descripción | 
|---|---|---|
| options.type | html | Representa el tipo de datos en las celdas de las columnas. Ver detalle | 
| options.format | YYYY-MM-DD | Cadena que representa el formato cuando se utiliza el tipo fecha. | 
| options.locale | en | Idioma de la tabla; por defecto, la clase RDTOptionsintenta obtener el idioma de sus configuraciones aplicadas aapp.phpy las asigna a esta opción. | 
| options.perPage | 20 | Cantidad de resultados por página | 
| options.perPageSelect | [5, 20, 50, 100, 150] | Matriz que permite al componente generar un selector para indicar cuántos resultados ver por página | 
| options.labels | array | Son textos que se muestran en el DataTable, por defecto, la clase RDTOptionsintenta obtenerlos desde la carpeta lang del componente, para conocer más aquí | 
Clase de configuración
La clase RDTOptions se usa para establecer opciones de configuración que luego serán transformadas en un objeto JavaScript para la librería fiduswriter/simple-datatables
Sus métodos son:
- __construct(array $options = [])Inicializa la clase de opciones, recibe las opciones que se usarán.
- set(string $key, mixed $value): RDTOptionspermite establecer una nueva opción o actualizar una existente.
- get(string $key, mixed $default = null): mixedpermite obtener el valor de una opción dada.
- merge(array $options): RDTOptionsPermite mezclar múltiples opciones
- toArray(): arrayExporta las opciones configuradas en un- array.
- toCollect(): CollectionExporta una colección Laravel de las opciones.
Esta clase tiene métodos protegidos protected que permite establecer opciones por defecto y obtener el idioma o ajustes de fechas de forma automática.
La Magia
La clase RDT, esta es la clase principal de este componente básicamente, con ella se realiza todo lo necesario para imprimir tablas de datos hermosas.
return RDT::DB(MyModel::all()) ->setOption(['sortable' => false]) ->humanHeaders([ "created_at"=>"Fecha de Registro" ]) ->excludeFields([ 'id', 'updated_at' ]) ->render();
Sus Métodos
Métodos Estáticos
- RDT::collection(Collection $data): RDTRecibe una colección Laravel e inicializa el componente.
- RDT::DB(Collection $data): RDTRecibe una colección Eloquent de Laravel e inicializa el componente.
- RDT::make(Collection|EloquentCollection|array $data): RDTRecibe una colección ó colección Eloquent de Laravel e inicializa el componente.
Métodos Públicos
- setOption(RDTOptions $options): RDTPermite establecer opciones de configuración a los datos actuales.
- getOptions(): RDTOptionsRetorna las opciones establecidas.
- mergeOptions(array|RDTOptions $options): RDTPermite mezclar opciones nuevas con las existentes, útil cuando queremos usar condiciones o datos dinámicos.
- humanHeaders(array $header): RDTPermite transformar la cabecera de la tabla en algo mas legible para Humanos.
- log(): RDTInicial los registros logs para esta tabla.
- excludeFields(array $fields): RDTPermite excluir campos de los datos pasados en el constructor.
- getData(): arrayPermite obtener los datos procesados.
- getRawData() : arrayPermite obtener los datos sin procesar.
- set_uniqueID(?string $id=null): RDTPermite establecer un identificador único para esta tabla; por defecto, se autógena.
- render()Esta quizás es la función más importante y la única obligatoria aparte del constructor, es la responsable de retornar la vista con la tabla generada.
Comando
DTLaravelEloquent integra un comando RDT:install cuya función es permitir usar los archivos sin compilar a fin de que pueda modificarlos a sus necesidades. Para esto debe usar la bandera --raw, ya que si no la usa simplemente se copiará la carpeta dist a su carpeta pública.
Vista
DTLaravelEloquent Ofrece un componente de vista el cual permite obtener los archivos CSS y JS desde su carpeta pública a fin de poder mostrar la tabla correctamente.
Adicional
Este paquete esta desarrollado usando fiduswriter/simple-datatables con Bootstrap 5.3 y utiliza iconos SVG de Bootstrap Icon, fue provado en Laravel Vesión 11 y actualizado a Laravel Vesión 12.
La finalidad de este desarrollo es el poder ayudar con un DataTable Simple, Rápido y eficiente.
