Eso es exactamente lo que hace --generate. Filament lee tu base de datos, detecta que «email» es un email, que «fecha_nacimiento» es una fecha, que «activo» es un sí/no… y crea el formulario perfecto. ¡Es casi magia!
El problema que resolvemos
Mira, imagina que tienes una tabla de clientes con 10 campos: nombre, email, teléfono, dirección, fecha de nacimiento, RFC, empresa, puesto, notas, activo… ¿Tienes que escribir cada campo a mano? ¡Eso tomaría muchísimo tiempo!
💡 Aquí está el truco: con --generate, Filament hace todo ese trabajo por ti en segundos.
Cómo funciona la magia
Filament examina cada columna de tu tabla y adivina qué componente usar:
📊 Lo que Filament detecta automáticamente:
| Tipo en BD | Componente que crea |
|---|---|
string |
TextInput |
text |
Textarea |
boolean |
Toggle |
date |
DatePicker |
datetime |
DateTimePicker |
integer/decimal |
TextInput con numeric() |
El comando que hace todo
Solo necesitas agregar --generate al comando que ya conoces:
📝 ESTE ES EL CÓDIGO QUE VAMOS A APRENDER:
📍 Archivo: terminal (línea de comandos)
php artisan make:filament-resource Cliente --generate
🔍 ¿Qué pasa cuando ejecutas este comando?
php artisan make:filament-resource Cliente → El comando básico que ya conoces para crear un resource.
--generate → Aquí está la magia. Le dice a Filament: «Lee la base de datos y genera el formulario y la tabla automáticamente».
Las preguntas que te hará Filament
Cuando ejecutes el comando, Filament te hará 3 preguntas. Aquí te digo qué responder:
- «What is the title attribute?» → Escribe:
nombre(el campo principal del cliente) - «Would you like a read-only view page?» → Escribe:
no(por ahora no) - «Generate from database columns?» → Escribe:
yes← ¡ESTA es la clave!
Lo inteligente que es Filament
Fíjate bien en lo que hace automáticamente:
- Si el campo es
nullable→ NO lo marca como obligatorio - Si el campo tiene
unique→ Agrega validación de unicidad - Si el campo se llama «email» → Agrega validación de email
- Si el campo se llama «telefono» → Agrega tipo
tel() - Si el campo tiene
default→ Usa ese valor por defecto
📁 ¿Quieres ver el formulario que genera automáticamente? (opcional)
Mira qué tan completo sale sin que tú escribas nada:
📍 Archivo: app/Filament/Resources/Clientes/Schemas/ClienteForm.php
return $schema->components([
TextInput::make('nombre')->required(),
TextInput::make('email')->email()->required(),
TextInput::make('telefono')->tel(),
Textarea::make('direccion')->columnSpanFull(),
DatePicker::make('fecha_nacimiento'),
Toggle::make('activo')->required(),
]);
Un detalle importante
La generación automática es un excelente PUNTO DE PARTIDA, pero casi siempre necesitarás ajustes. Por ejemplo, Filament no sabe que quieres un símbolo $ en el precio, o que ciertos campos deben tener validaciones especiales.
💡 Usa --generate para crear la base, y luego personaliza lo que necesites.
Combinar con otras opciones
Puedes mezclar --generate con otras banderas que ya conoces:
# Resource simple + generación automática
php artisan make:filament-resource Categoria --simple --generate
# Resource con soft deletes + generación automática
php artisan make:filament-resource Cliente --generate --soft-deletes
🎉 ¿Qué aprendimos hoy?
--generatelee tu base de datos y crea el formulario y la tabla automáticamente- Detecta el tipo de cada columna y elige el componente correcto
- Respeta nullable, unique, default, y otros detalles de la migración
- Es un punto de partida perfecto, pero siempre puedes personalizar después
- Ahorra muchísimo tiempo cuando tienes muchas columnas
En la siguiente lección vamos a ver --soft-deletes, que es como tener una papelera de reciclaje para tus datos. ¡Nunca más perderás un registro por error! Nos vemos. 🚀