Estrutura de grid reaproveitável, para ser usada em vários lugares da aplicação.
Instalando via composer. Configure o arquivo composer.json para que ele permita a instalação de pacote com estabilidade dev
composer require firmino/tablegrid
Registre o ServiceProvider em config/app.php
'providers' => [
Firmino\TableGrid\Providers\TableGridServiceProvider::class,
]
Registre também o Facade no mesmo arquivo
'aliases' => [
'TableGrid' => Firmino\TableGrid\Facades\TableGrid::class,
]
Publique o arquivo de configuração
php artisan vendor:publish --provider="Firmino\TableGrid\Providers\TableGridServiceProvider"
Utilize o Facade TableGrid para configurar a tabela, este possui os seguintes metódos que podem ser utilizados para criar a estrutura da tablea:
<?php
// código omitido ....
use Firmino\TableGrid\Facades\TableGrid;
// codigo omitido ....
public function index(){
$table = TableGrid::model(Model::class)
->columns([
[
'label' => 'Titulo',
'name' => 'title'
]
])
->search();
return view('view')->with('table', $table);
}
Para renderizar a tabela basta chamar o metodo ´render()´ da seguinte forma no html:
{!! $table->render() !!}
Recebe um array com os dados que deve ser visualizado na tabela. Caso contrário será retornado o model.
Recupera uma matriz com as informações das colunas caso não seja enviado nenhum valor. Caso contrário recebe uma matriz
[
[
'label' => 'Titulo',
'name' => 'title'
]
]
Pode ser enviado ainda uma chave chamada field
para caso o campo que se deseja mostrar seja um objeto referente a
alguma relação do model, esta chave deve receber qual o campo desse objeto deve ser mostrado.
Exemplo:
[
[
'label' => 'Autor',
'name' => 'user',
'fiedl' => 'name'
]
]
Recupera as linhas da tabela
Configura se o plugin DataTable deverá ser usado.
Recupera o atributo dataTable, que identifica se o plugin DataTable está ativo ou não.
Recupera as ações que foram adicionadas na tabela
Adiciona uma ação para ser exibida na tabela.
- $label => Texto que aparece no link.
- $route => Nome da rota que será redirecionado ao clicar no link.
- $template => Template do link que será mostrado no front-end.
- $class => Classe do Bootstrap para personalizar os links.
addEditAction(string $label, string $route, string $template, string $class = 'btn btn-primary btn-sm')
Adiciona uma ação de edição para ser exibida na tabela.
- $label => Texto que aparece no link.
- $route => Nome da rota que será redirecionado ao clicar no link.
- $template => Template do link que será mostrado no front-end.
- $class => Classe do Bootstrap para personalizar os links.
Adiciona uma ação de exclusão para ser exibida na tabela.
- $label => Texto que aparece no link.
- $route => Nome da rota que será redirecionado ao clicar no link.
- $template => Template do link que será mostrado no front-end.
- $class => Classe do Bootstrap para personalizar os links.
Faz a consulta no banco de dados na tabela referente ao model
configurado.
Renderiza a tabela.
O pacote possui 3 tamplates básicos para renderizar os links de ações, que podem ser chamados da seguinte forma:
- Table::templates.edit-action
- Table::templates.delete-action
- Table::templates.action (Para ações adicionais)
O arquivo de configurações permite fazer alguns ajustes no plugin DataTable.
- translation_table (Permite que as informações da tabela sejam traduziadas para o portugues-br)
- zero_records (Texto que é mostrado quando não são encontrados registro na tabela)
- search (Texto que aparece ao lado da barra de pesquisa da tabela)
<?php
// código omitido ....
use Firmino\TableGrid\Facades\TableGrid;
// codigo omitido ....
public function index(){
$table = TableGrid::model(Model::class)
->columns([
[
'label' => 'Titulo',
'name' => 'title'
],
[
'label' => 'Autor',
'name' => 'user',
'field' => 'name'
]
])
->activeDataTable(true)
->addEditAction('Editar', 'edit', 'Table::templates.edit-action')
->addDeleteAction('Excluir', 'destroy', 'Table::templates.delete-action', 'danger')
->search();
return view('home')->with('table', $table);
}
<?php
// código omitido ....
use Firmino\TableGrid\Facades\TableGrid;
// codigo omitido ....
public function index(){
$table = TableGrid::model(Model::class)
->columns([
[
'label' => 'Descricao',
'name' => 'description'
]
])
->addAction('acao', 'login', 'table.action', 'warning')
->search();
return view('home')->with('table', $table);
}