
1. Cómo crear tu primer Resource en Filament 5: de cero a tu panel de administración
Si estás empezando con Filament 5 y Laravel 12, este es tu primer paso. Hoy vas a generar un Resource completo con un solo comando y verás aparecer tu propio panel de administración en el navegador. Sin escribir código, solo ejecutar y observar la magia. Al final de esta lección tendrás una tabla vacía lista para que empieces a construir sobre ella.
🎯 Objetivo de hoy
Generar el Resource Customer (cliente) y ver tu primera tabla vacía en el navegador.
🖥️ Antes / Después
Antes: No tienes nada en /admin, solo el panel de Filament vacío.
Después: Verás «Customers» en tu menú lateral y una tabla lista para recibir datos. Tu primer «¡Oh! esto funciona».
📋 Paso 1: Tu código de ayer
No tienes código aún. Hoy empezamos desde cero. Solo necesitas tu terminal.
➕ Paso 2: Tu ladrillo de hoy (un solo comando)
📄 Ruta: Terminal
php artisan make:filament-resource Customer
Filament te preguntará si quieres generar el modelo. Si ya tienes App\Models\Customer, responde no. Si no lo tienes, responde sí y Filament lo creará por ti.
Este comando crea automáticamente toda la estructura. No escribiste ni una línea de código y ya tienes un CRUD completo.
✅ Paso 3: Todo lo que se generó
📁 Estructura de carpetas creada
Ruta base: app/Filament/Resources/Customers/
app/Filament/Resources/
└── Customers/
├── CustomerResource.php
└── Pages/
| ├── CreateCustomer.php
| ├── EditCustomer.php
| └── ListCustomers.php
├── Schemas/
| └── CustomerForm.php
└── Tables/
└── CustomersTable.php
📄 Archivo principal del Resource
Ruta completa: app/Filament/Resources/Customers/CustomerResource.php
<?php
namespace App\Filament\Resources\Customers;
use App\Filament\Resources\Customers\Pages\CreateCustomer;
use App\Filament\Resources\Customers\Pages\EditCustomer;
use App\Filament\Resources\Customers\Pages\ListCustomers;
use App\Filament\Resources\Customers\Schemas\CustomerForm;
use App\Filament\Resources\Customers\Tables\CustomersTable;
use App\Models\Customer;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables\Table;
class CustomerResource extends Resource
{
protected static ?string $model = Customer::class;
protected static ?string $recordTitleAttribute = 'name';
public static function form(Schema $schema): Schema
{
return CustomerForm::configure($schema);
}
public static function table(Table $table): Table
{
return CustomersTable::configure($table);
}
public static function getPages(): array
{
return [
'index' => ListCustomers::route('/'),
'create' => CreateCustomer::route('/create'),
'edit' => EditCustomer::route('/{record}/edit'),
];
}
}
🎉 Verifica tu magia
Abre tu navegador en http://tuproyecto.test/admin/customers y deberías ver:
- En el menú lateral izquierdo: un ítem llamado «Customers»
- En el centro: una tabla vacía con el mensaje «No records found» o similar
- Arriba a la derecha: un botón «New customer» (o «Crear» según tu idioma)
Si no ves el menú Customers, revisa que tu modelo Customer exista y que no tengas un Policy bloqueando el acceso. Si tienes dudas, no te preocupes, lo veremos en el siguiente ladrillo.
¿Lo ves? ¡Eso es Filament trabajando para ti! Sin escribir código, ya tienes un panel funcional.
💬 ¿Viste aparecer tu primera tabla? Con solo un comando, ya tienes un panel de administración profesional. Mañana aprenderemos a agregar tu primer campo de texto para que puedas escribir el nombre del cliente. ¿Te animas a seguir construyendo ladrillo por ladrillo?
📖 Fuente oficial: Documentación de Filament 5 — Creating Resources
➡️ Próximo paso: Mañana agregaremos tu primer campo de texto: el nombre del cliente. Verás cómo aparece el input en el formulario mágicamente.