PHPackages                             gsferro/resource-crud-easy - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. gsferro/resource-crud-easy

ActiveLibrary[Templating &amp; Views](/categories/templating)

gsferro/resource-crud-easy
==========================

Generic resource method for crud using SPA

v1.0.0(11mo ago)0504↓50%MITHTMLPHP ^8.0CI failing

Since Mar 18Pushed 11mo ago1 watchersCompare

[ Source](https://github.com/gsferro/laravel-resourcecrudeasy)[ Packagist](https://packagist.org/packages/gsferro/resource-crud-easy)[ RSS](/packages/gsferro-resource-crud-easy/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (17)Versions (3)Used By (0)

Resource CRUD Easy
==================

[](#resource-crud-easy)

[![Logo](logo.png)](logo.png)

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
---------

[](#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
----------

[](#requisitos)

PackageVersãoPHP^8.0Laravel^8.0owen-it/laravel-auditing^12.0spatie/laravel-permission^5.8your-app-rocks/eloquent-uuid^2.5genealabs/laravel-model-caching0.\*freshbitsweb/laratables^2.5gsferro/database-schema-easy^1gsferro/filtereasy^1.1gsferro/responseview^1.2gsferro/powermodel^1.3gsferro/select2easy^1.2.1Instalação
----------

[](#instalação)

```
composer require gsferro/resource-crud-easy -W
```

Configuração
------------

[](#configuração)

### 1. Publicar arquivos

[](#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

[](#2-configuração-do-arquivo-configresource-crud-easyphp)

```
return [
    // Quando true, o pacote implementará automaticamente permissões para todas as operações CRUD
    'use_permissions' => true,
];
```

### 3. Configuração do Frontend

[](#3-configuração-do-frontend)

Adicione os seguintes diretivas Blade no seu layout principal:

No cabeçalho (dentro da tag ``):

```
{{-- 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 ``):

```
{{-- Plugin DataTables JS --}}
@ResourceCrudEasyDatatablesPlugin()

{{-- Plugins JS gerais --}}
@ResourceCrudEasyPlugins()

{{-- Select2Easy JS --}}
@select2easyJs()

{{-- Configuração para DataTables usar POST --}}

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        async: true
    });
    $(function(){
        {{-- Inicialização do Select2Easy --}}
        $('.select2easy:not(".select2-hidden-accessible")').select2easy();
    });

{{-- Para scripts específicos de cada página --}}
@yield('js')
```

Comandos Disponíveis
--------------------

[](#comandos-disponíveis)

### Gerar CRUD Completo

[](#gerar-crud-completo)

```
php artisan gsferro:resource-crud  [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

[](#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](src/docs/test-generation.md).

### Gerar Componentes React para Tabelas Existentes

[](#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
--------------------------

[](#funcionalidades-principais)

### Traits para Controladores

[](#traits-para-controladores)

#### ResourceCrudEasy

[](#resourcecrudeasy)

Fornece métodos básicos para operações CRUD:

- `index()`: Exibe a listagem de registros
- `create()`: Exibe o formulário de criação
- `edit($id)`: Exibe o formulário de edição

#### ResourceCrudEasyApi

[](#resourcecrudeasyapi)

Fornece métodos para manipulação de dados:

- `store(Request $request)`: Cria um novo registro
- `update(Request $request, $id)`: Atualiza um registro existente
- `show($id)`: Exibe um registro específico
- `destroy($id)`: Remove um registro (não implementado)

### Modelos Base

[](#modelos-base)

#### BaseModel

[](#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

[](#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

[](#componentes-blade)

- ``: Processamento de DataTables
- ``: Filtros laterais para DataTables
- ``: Formulário de filtro
- ``: Botão de edição
- ``: Botão de registro
- ``: Link de cancelamento

Exemplo de Uso
--------------

[](#exemplo-de-uso)

### 1. Gerar um CRUD completo para uma entidade

[](#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

[](#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

[](#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
-----

[](#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

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance50

Moderate activity, may be stable

Popularity17

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

358d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9857d9f527903d58285b8afd4c9cc5d4150041a5951ba5b84c399d0e579b0255?d=identicon)[gsferro](/maintainers/gsferro)

---

Top Contributors

[![gsferro](https://avatars.githubusercontent.com/u/12704346?v=4)](https://github.com/gsferro "gsferro (144 commits)")

---

Tags

laraveltemplatecrudeasygenerateSPA

### Embed Badge

![Health badge](/badges/gsferro-resource-crud-easy/health.svg)

```
[![Health](https://phpackages.com/badges/gsferro-resource-crud-easy/health.svg)](https://phpackages.com/packages/gsferro-resource-crud-easy)
```

###  Alternatives

[typicms/base

A modular multilingual CMS built with Laravel, enabling developers to manage structured content like pages, news, events, and more.

1.6k20.3k](/packages/typicms-base)[vikdiesel/admin-one-laravel-dashboard

Admin One - Laravel Dashboard Preset (SPA)

1435.5k](/packages/vikdiesel-admin-one-laravel-dashboard)[hieu-le/laravel-dashboard

A starting template for Laravel 5 dashboards

312.6k](/packages/hieu-le-laravel-dashboard)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
