Skip to content

Laravel SchemaBuilderConstruye Formularios y Tablas en 5 Minutos

Construye formularios interactivos, tablas dinámicas y validaciones seguras en 5 minutos sin duplicar código ni pelear con validaciones. Diseña tu entidad en un único archivo Schema fluido en PHP y genera la API y especificaciones listas para cualquier frontend (BootstrapVue, Vue 3, React o Blade).

Laravel SchemaBuilder

¿POR QUÉ CONSTRUIR CRUDS SIGUE SIENDO TAN LENTO Y REPETITIVO?

En la mayoría de proyectos Laravel, crear un CRUD implica hacer el mismo trabajo 5 veces: crear la migración, escribir el FormRequest con 30 reglas, configurar el controlador, diseñar la tabla en el frontend y armar los modales con inputs repetidos. Si agregas un campo nuevo, debes tocar 5 archivos distintos.

Con Laravel SchemaBuilder, escribes tu Schema una sola vez en PHP y el sistema resuelve el resto:

php
// app/Schemas/UserSchema.php
namespace App\Schemas;

use Warrior\SchemaBuilder\Table\TableSchema;
use Warrior\SchemaBuilder\Table\Column;
use Warrior\SchemaBuilder\Form\FormSchema;
use Warrior\SchemaBuilder\Form\Field;

class UserSchema
{
    public static function table(): TableSchema
    {
        return TableSchema::make('users-table', 'Usuarios')
            ->endpoint('/api/v1/users')
            ->columns([
                Column::make('name', 'Nombre')->avatar('avatar', 'name', 'email')->sortable(),
                Column::make('role', 'Rol')->badge(['admin' => 'primary', 'user' => 'info'])->sortable(),
                Column::make('balance', 'Saldo')->currency('USD')->sortable(),
                Column::make('created_at', 'Registro')->date()->sortable(),
            ]);
    }

    public static function form(): FormSchema
    {
        return FormSchema::make('user-form', 'Expediente')
            ->fields([
                Field::text('name', 'Nombre')->required()->string()->maxLength(100)->cols(12),
                Field::email('email', 'Correo')->required()->cols(12),
                Field::select('role', 'Rol')->options(['admin' => 'Admin', 'user' => 'User'])->required()->cols(6),
                Field::number('balance', 'Saldo')->min(0)->cols(6),
            ]);
    }
}
php
// app/Http/Controllers/Api/UserController.php
namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\User;
use App\Schemas\UserSchema;
use Warrior\SchemaBuilder\Concerns\HasDynamicCrudSchema;

class UserController extends Controller
{
    use HasDynamicCrudSchema;

    protected function tableSchema() { return UserSchema::table(); }
    protected function formSchema() { return UserSchema::form(); }

    public function store(Request $request)
    {
        // ¡Validación extraída automáticamente desde tu FormSchema!
        $validated = $this->validateWithSchema($request);
        return response()->json(['data' => User::create($validated)], 201);
    }
}
php
// routes/api.php
use App\Http\Controllers\Api\UserController;
use Illuminate\Support\Facades\Route;

Route::prefix('v1')->group(function () {
    // ¡Expande automáticamente /schema, /index, /store, /show, /update, /destroy, /restore y /force!
    Route::crud('users', UserController::class);
});
vue
<!-- resources/js/pages/users.vue -->
<script setup>
import { CrudComponent } from '@/components/dynamic-table'
</script>

<template>
  <!-- CrudComponent consume /api/v1/users/schema y renderiza la tabla, filtros y modales automáticamente -->
  <CrudComponent schema-url="/api/v1/users/schema" />
</template>

COMPATIBILIDAD Y RENDIMIENTO GARANTIZADO

Diseñado para PHP 8.2, 8.3, 8.4 y 8.5 con Laravel 10, 11 y 12. Verificado al 100% con PHPStan en Nivel 8 (análisis estático estricto) y suites completas de pruebas unitarias y de integración.

Liberado bajo la Licencia MIT.