Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neoacevedo/laravel-gridview
Genera una tabla HTML con datos de array de Eloquent/Collections.
https://github.com/neoacevedo/laravel-gridview
gridview html laravel table
Last synced: about 2 months ago
JSON representation
Genera una tabla HTML con datos de array de Eloquent/Collections.
- Host: GitHub
- URL: https://github.com/neoacevedo/laravel-gridview
- Owner: neoacevedo
- License: gpl-3.0
- Created: 2024-01-21T23:13:25.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-03-10T18:09:57.000Z (10 months ago)
- Last Synced: 2024-03-11T19:03:04.342Z (10 months ago)
- Topics: gridview, html, laravel, table
- Language: PHP
- Homepage:
- Size: 22.5 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
Laravel GridView
============Laravel GridView es un paquete para generar una tabla con datos. Permite generar de manera rápida una tabla a partir de un array de modelos Eloquent o Collections, usando los atributos como columnas y cada fila es un modelo con sus datos.
## Instalación
La forma preferida de instalar esta extensión es a través de [composer](http://getcomposer.org/download/).
Luego ejecute
```
php composer.phar require --prefer-dist neoacevedo/laravel-gridview "*"
```o agregue
```
"neoacevedo/laravel-gridview": "*"
```a la sección require de su archivo `composer.json`.
Luego ejecute el siguiente comando _artisan_ para copiar los assets en el directorio _public/vendor/gridview/assets_:
```bash
php artisan vendor:publish --provider="neoacevedo\\gridview\\Providers\\GridViewServiceProvider" --tag=gridview-assets
```## Uso
Una vez que la extensión está instalada, puede crear la tabla de la siguiente forma:
Registre el servico en el archivo de configuración _app.php_ en la sección `providers`:
```php
...
/*
* Package Service Providers...
*/
neoacevedo\gridview\Providers\GridViewServiceProvider::class,
...
```Como ejemplo, en su controlador, en el método index, puede poner lo siguiente:
```php
public function index(Request $request, int $page = 1, int $perPage = 5)
{
$data = [
[
'nombre' => 'Andres',
'fecha' => 1706200888,
'email' => '[email protected]',
],
[
'nombre' => 'Jorge',
'fecha' => 1706200890,
'email' => '[email protected]',
],
[
'nombre' => 'Nelson',
'fecha' => 1706200990,
'email' => '[email protected]',
],
[
'nombre' => 'Juan',
'fecha' => 1706201000,
'email' => '[email protected]',
],
[
'nombre' => 'Pedro',
'fecha' => 1706201010,
'email' => '[email protected]',
],
[
'nombre' => 'Felipe',
'fecha' => 1706201020,
'email' => '[email protected]',
],
[
'nombre' => 'Fredy',
'fecha' => 1706201030,
'email' => '[email protected]',
],
[
'nombre' => 'Richard',
'fecha' => 1706201040,
'email' => '[email protected]',
],
];Collection::macro('paginate', function ($perPage, $total = null, $page = null, $pageName = 'page') {
$page = $page ?: LengthAwarePaginator::resolveCurrentPage($pageName);return new LengthAwarePaginator($this->forPage($page, $perPage), $total ?: $this->count(), $perPage, $page, [
'path' => LengthAwarePaginator::resolveCurrentPath(),
'pageName' => $pageName,
]);
});$dataProvider = collect($data)->paginate(5);
return response()->view('index', compact('dataProvider'));
}
```Para Laravel 6.x o uso como clase:
```php
{{ gridview()->widget([
'dataProvider' => $dataProvider,
'tableOptions' => [
' id' => 'datatable',
'class' => 'dataTable'
],
'columns' => [
[
'attribute' => 'nombre',
'headerOptions' => ['data-sortable' => 'true']
],
[
'attribute' => 'fecha',
'format' => ['datetime', 'd/m/Y H:i:s']
],
'email:email:Email',
[
'class' => '\neoacevedo\gridview\Column\ActionColumn',
'header' => 'Actions'
]
]
]) }}
```Para Laravel >=7.x, se puede de la forma anterior, o como componente:
```php
```
La propiedad `dataProvider` tiene que ser de tipo `\Illuminate\Contracts\Pagination\LengthAwarePaginator` con el fin de generar el paginador.
En el array de columnas, puede especificar la clase que se encargará de renderizar el contenido de toda la columna a través de la propiedad `class`. Las clases de columna que soporta GridView son:
- `\neoacevedo\gridview\Column\ActionColumn`: Columna que se encarga de renderizar botones para diferentes acciones sobre la fila.
- `\neoacevedo\gridview\Column\CheckboxColumn`: Columna que se encarga de renderizar checkboxes.
- `\neoacevedo\gridview\Column\DataColumn`: Columna que se encarga de renderizar la mayoría de los datos. Es la columna predefinida si se omite la propiedad `class`.
- `\neoacevedo\gridview\Column\RadioButtonColumn`: Columna que se encarga de renderizar inputs de radio
- `\neoacevedo\gridview\Column\SerialColumn`: Columna que renderiza el número de cada fila.Con cualquiera de las dos opciones, se obtendrá una tabla parecida a la siguiente:
```html
Nombre
Fecha
Actions
Andres
2024-01-25 16:41:28
[email protected]
Jorge
2024-01-25 16:41:30
[email protected]
```
### Sobrescribir la plantilla `Blade`
Si desea sobrescribir la vista que genera la tabla, ejecute el siguiente comando para que copie los archivos de vista en
_resources/views/vendor/gridview_:```bash
php artisan vendor:publish --provider="neoacevedo\\gridview\\Providers\\GridViewServiceProvider" --tag=gridview-view
```Si está usando GridView como componente, la vista será copiada en _resources/views/components_:
```bash
php artisan vendor:publish --provider="neoacevedo\\gridview\\Providers\\GridViewServiceProvider" --tag=gridview-component-view
```