firmino/tablegrid

Estrutura de grid reaproveitável, para ser usada em vários lugares da aplicação.

dev-master 2017-11-08 13:51 UTC

This package is not auto-updated.

Last update: 2024-11-09 03:42:30 UTC


README

Estrutura de grid reaproveitável, para ser usada em vários lugares da aplicação.

Instalaçã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"

Como utilizar

Utilize o Facade TableGrid para configurar a tabela, este possui os seguintes metódos que podem ser utilizados para criar a estrutura da tablea:

Exemplo básico

<?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() !!}

Metódos

model(Model $model = null)

Recebe um array com os dados que deve ser visualizado na tabela. Caso contrário será retornado o model.

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

[
  [
     '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'
  ]
]
rows()

Recupera as linhas da tabela

activeDataTable(Boolean $active)

Configura se o plugin DataTable deverá ser usado.

dataTable()

Recupera o atributo dataTable, que identifica se o plugin DataTable está ativo ou não.

actions()

Recupera as ações que foram adicionadas na tabela

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.
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.
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.
search()

Faz a consulta no banco de dados na tabela referente ao modelconfigurado.

render()

Renderiza a tabela.

Templates

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)

Configurações

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)

Exemplos

Usando ações editar e excluir

<?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);
}

Usando ações adicionais

<?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);
 }