gsferro / resource-crud-easy
Generic resource method for crud using SPA
Installs: 168
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:HTML
Requires
- php: ^8.0
- barryvdh/laravel-debugbar: ^3.2
- barryvdh/laravel-ide-helper: ^2.13
- freshbitsweb/laratables: ^2.5|^3.0
- genealabs/laravel-model-caching: 0.*|1.*
- gsferro/database-schema-easy: ^1
- gsferro/filtereasy: ^1.1
- gsferro/powermodel: ^1.3
- gsferro/responseview: ^1.2
- gsferro/select2easy: ^1.2.1
- laravel/framework: ^8.0|^9.0|^10.0
- owen-it/laravel-auditing: ^12.0|^13.5.1
- pestphp/pest: ^1.22|^2.8.1
- pestphp/pest-plugin-laravel: ^1.4|^2.0
- phpunit/phpunit: ^9.5.10|^10.1
- protonemedia/laravel-form-components: ^3.5.1
- spatie/laravel-permission: ^5.8
- your-app-rocks/eloquent-uuid: ^2.5
This package is auto-updated.
Last update: 2025-05-17 04:07:41 UTC
README
Um pacote Laravel para geração de scaffolding CRUD completo baseado em estruturas de banco de dados, com suporte a SPA (Single Page Application).
Descrição
Resource CRUD Easy é um pacote que facilita a criação de operações CRUD (Create, Read, Update, Delete) em aplicações Laravel. Ele gera automaticamente modelos, controladores, visualizações, testes e outros arquivos necessários com base na estrutura do banco de dados.
Requisitos
Package | Versão |
---|---|
PHP | ^8.0 |
Laravel | ^8.0 |
owen-it/laravel-auditing | ^12.0 |
spatie/laravel-permission | ^5.8 |
your-app-rocks/eloquent-uuid | ^2.5 |
genealabs/laravel-model-caching | 0.* |
freshbitsweb/laratables | ^2.5 |
gsferro/database-schema-easy | ^1 |
gsferro/filtereasy | ^1.1 |
gsferro/responseview | ^1.2 |
gsferro/powermodel | ^1.3 |
gsferro/select2easy | ^1.2.1 |
Instalação
composer require gsferro/resource-crud-easy -W
Configuração
1. Publicar arquivos
# Publicar arquivos do Resource CRUD Easy php artisan vendor:publish --provider="Gsferro\ResourceCrudEasy\Providers\ResourceCrudEasyServiceProvider" --tag=config # Publicar assets (opcional) php artisan vendor:publish --provider="Gsferro\ResourceCrudEasy\Providers\ResourceCrudEasyServiceProvider" --tag=plugins php artisan vendor:publish --provider="Gsferro\ResourceCrudEasy\Providers\ResourceCrudEasyServiceProvider" --tag=styles php artisan vendor:publish --provider="Gsferro\ResourceCrudEasy\Providers\ResourceCrudEasyServiceProvider" --tag=views # Publicar arquivos de pacotes dependentes php artisan vendor:publish --provider="OwenIt\Auditing\AuditingServiceProvider" php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" php artisan vendor:publish --provider="Gsferro\Select2Easy\Providers\Select2EasyServiceProvider" --force
2. Configuração do arquivo config/resource-crud-easy.php
return [ // Quando true, o pacote implementará automaticamente permissões para todas as operações CRUD 'use_permissions' => true, ];
3. Configuração do Frontend
Adicione os seguintes diretivas Blade no seu layout principal:
No cabeçalho (dentro da tag <head>
):
{{-- jQuery v3.6.4 --}} @ResourceCrudEasyJquery() {{-- FontAwesome v4 (opcional) --}} @FontAwesomeV4() {{-- Estilos CSS para DataTables --}} @ResourceCrudEasyDatatablesExtraCss() {{-- Estilos CSS gerais --}} @ResourceCrudEasyStylesCss() {{-- Select2Easy CSS --}} @select2easyCss()
No final do corpo (antes de fechar a tag </body>
):
{{-- Plugin DataTables JS --}} @ResourceCrudEasyDatatablesPlugin() {{-- Plugins JS gerais --}} @ResourceCrudEasyPlugins() {{-- Select2Easy JS --}} @select2easyJs() {{-- Configuração para DataTables usar POST --}} <script type="text/javascript"> $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, async: true }); $(function(){ {{-- Inicialização do Select2Easy --}} $('.select2easy:not(".select2-hidden-accessible")').select2easy(); }); </script> {{-- Para scripts específicos de cada página --}} @yield('js')
Comandos Disponíveis
Gerar CRUD Completo
php artisan gsferro:resource-crud <Nome-Entidade> [opções]
Opções disponíveis:
--table=
: Nome da tabela no banco de dados (opcional)--connection=
: Nome da conexão do banco de dados (opcional)--model-aux
: Indica se é um modelo auxiliar--datatable
: Gera suporte para DataTables--factory
: Gera factory para o modelo--seeder
: Gera seeder para o modelo--migrate
: Gera migração para o modelo--controller
: Gera controller para o modelo
Este comando irá gerar:
- Modelo
- Controlador (opcional)
- Visualizações (opcional)
- Factory (opcional)
- Seeder (opcional)
- Migração (opcional)
- Testes unitários e de feature
- Rotas
Gerar Testes Automatizados
php artisan gsferro:resource-test [opções]
Opções disponíveis:
--model=
: Nome do modelo para gerar testes--controller=
: Nome do controlador para gerar testes--all
: Gera testes para todos os modelos e controladores--force
: Força a sobrescrita de testes existentes
Este comando analisa a estrutura de código existente e gera testes abrangentes para modelos e controladores, incluindo:
- Testes de relacionamentos
- Testes de escopos
- Testes de validação
- Testes de API
- Testes de banco de dados
Para mais detalhes, consulte a documentação de geração de testes.
Gerar Componentes React para Tabelas Existentes
php artisan gsferro:resource-choice-table [opções]
Opções disponíveis:
--connection=
: Nome da conexão do banco de dados (opcional)--table=
: Nome da tabela específica (opcional)--modulo=
: Nome do módulo para agrupar os componentes
Funcionalidades Principais
Traits para Controladores
ResourceCrudEasy
Fornece métodos básicos para operações CRUD:
index()
: Exibe a listagem de registroscreate()
: Exibe o formulário de criaçãoedit($id)
: Exibe o formulário de edição
ResourceCrudEasyApi
Fornece métodos para manipulação de dados:
store(Request $request)
: Cria um novo registroupdate(Request $request, $id)
: Atualiza um registro existenteshow($id)
: Exibe um registro específicodestroy($id)
: Remove um registro (não implementado)
Modelos Base
BaseModel
Modelo base que estende o Eloquent Model e implementa:
- Auditoria (via owen-it/laravel-auditing)
- Filtragem (via gsferro/filtereasy)
- Funcionalidades avançadas (via gsferro/powermodel)
AuxModel
Modelo para tabelas auxiliares (lookup tables) que estende BaseModel e implementa:
- Cache (via genealabs/laravel-model-caching)
- Integração com Select2 (via gsferro/select2easy)
- Configurações padrão para tabelas simples (id, name)
Componentes Blade
<x-datatables-process>
: Processamento de DataTables<x-side-right-filters>
: Filtros laterais para DataTables<x-form-filter>
: Formulário de filtro<x-btn-edit>
: Botão de edição<x-btn-register>
: Botão de registro<x-link-cancel>
: Link de cancelamento
Exemplo de Uso
1. Gerar um CRUD completo para uma entidade
php artisan gsferro:resource-crud Usuario --table=usuarios
2. Criar um controlador que utiliza as traits do pacote
namespace App\Http\Controllers; use App\Models\Usuario; use Gsferro\ResourceCrudEasy\Traits\ResourceCrudEasy; use Illuminate\Http\Request; class UsuarioController extends Controller { use ResourceCrudEasy; public function __construct(Usuario $model) { $this->model = $model; } // Os métodos index(), create(), edit(), store(), update() já estão implementados pela trait }
3. Criar um modelo que estende o BaseModel
namespace App\Models; use Gsferro\ResourceCrudEasy\Models\BaseModel; class Usuario extends BaseModel { protected $fillable = ['nome', 'email', 'telefone']; // Regras de validação public static $rules = [ 'store' => [ 'nome' => 'required|string|max:255', 'email' => 'required|email|unique:usuarios,email', 'telefone' => 'nullable|string|max:20', ], 'update' => [ 'nome' => 'required|string|max:255', 'email' => 'required|email|unique:usuarios,email,{id}', 'telefone' => 'nullable|string|max:20', ], ]; }
Notas
- O pacote utiliza convenções para nomes de views baseados no nome da entidade (snake_case)
- As permissões são geradas automaticamente se a configuração
use_permissions
estiver ativada - O pacote suporta tanto aplicações tradicionais quanto SPAs