Estrutura de grid reaproveitável, para ser usada em vários lugares da aplicação.
Estrutura de grid reaproveitável, para ser usada em vários lugares da aplicação., (*1)
Instalando via composer. Configure o arquivo composer.json para que ele permita a instalação de pacote com estabilidade dev, (*2)
composer require firmino/tablegrid
Registre o ServiceProvider em config/app.php, (*3)
'providers' => [ Firmino\TableGrid\Providers\TableGridServiceProvider::class, ]
Registre também o Facade no mesmo arquivo, (*4)
'aliases' => [ 'TableGrid' => Firmino\TableGrid\Facades\TableGrid::class, ]
Publique o arquivo de configuração, (*5)
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:, (*6)
<?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:, (*7)
{!! $table->render() !!}
, (*8)
model(Model $model = null)
Recebe um array com os dados que deve ser visualizado na tabela. Caso contrário será retornado o model., (*9)
columns(Array $columns = null)
Recupera uma matriz com as informações das colunas caso não seja enviado nenhum valor. Caso contrário recebe uma matriz, (*10)
[ [ '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:, (*11)
[ [ 'label' => 'Autor', 'name' => 'user', 'fiedl' => 'name' ] ]
rows()
Recupera as linhas da tabela, (*12)
activeDataTable(Boolean $active)
Configura se o plugin DataTable deverá ser usado., (*13)
dataTable()
Recupera o atributo dataTable, que identifica se o plugin DataTable está ativo ou não., (*14)
actions()
Recupera as ações que foram adicionadas na tabela, (*15)
addAction(string $label, string $route, string $template, string $class = 'btn btn-default btn-sm')
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., (*16)
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., (*17)
addDeleteAction(string $label, string $route, string $template, string $class = 'danger')
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., (*18)
search()
Faz a consulta no banco de dados na tabela referente ao model
configurado., (*19)
render()
Renderiza a tabela., (*20)
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), (*21)
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), (*22)
<?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); }