Cómo funciona Laravel filament
(4 min. de lectura) Laravel Filament es un framework open-source muy popular para Laravel que permite crear paneles administrativos, dashboards y aplicaciones completas de forma extremadamente rápida y elegante, sin necesidad de escribir mucho HTML, CSS o JavaScript.¿Qué es exactamente Filament?
Filament es un Server-Driven UI framework y significa que se define toda la interfaz de usuario completamente en PHP, y Filament se encarga de generar el HTML interactivo y reactivo en el navegador. Está construido sobre el TALL: Stack:- Tailwind CSS (diseño moderno y responsive).
- Alpine.js (interactividad ligera).
- Livewire (reactividad sin escribir Vue/React).
- Laravel (el backend).
¿Cómo funciona Filament?
- Paneles: Son el contenedor principal. Se pueden tener múltiples paneles en una misma aplicación Laravel, por ejemplo: un panel para administradores /admin, otro para usuarios /app, otro para partners, etc.. Cada panel tiene su propio diseño, middleware, rutas, colores, logo, etc.
- Recursos: Es la parte más potente. Un recurso representa un Modelo Eloquent por ejemplo: Post, User, Producto, Pedido. Con un solo comando se genera automáticamente:
- Tabla para listar registros con filtros, búsqueda, ordenamiento, acciones en masa, etc....
- Formulario para crear/editar.
- Página de vista (Infolist).
- Acciones (delete, custom buttons, etc.).
public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('name')->sortable()->searchable(), TextColumn::make('email'), ImageColumn::make('photo'), ]) ->filters([...]) ->actions([EditAction::make()]) ->bulkActions([DeleteBulkAction::make()]); } public static function form(Form $form): Form { return $form ->schema([ TextInput::make('name')->required(), Select::make('category_id')->relationship('category', 'name'), // ... ]); } - Componentes principales:
- Forms: Campos de todo tipo (text, select, date, file, repeater, builder, dependent fields, etc.)
- Tables: Tablas avanzadas con columnas, filtros, búsqueda global, grouping, summaries, etc.
- Infolists: Para mostrar datos en modo solo lectura (muy bonito para vistas de detalle).
- Widgets: Tarjetas de estadísticas, gráficos, tablas pequeñas en el dashboard.
- Actions: Botones y acciones personalizadas.
- Notifications: Sistema de notificaciones integrado.
- Pages: Páginas personalizadas (no atadas a un modelo).
- Livewire + Server-Driven: Todo funciona con Livewire v3. Cuando se interactúa (haciendo clic, cambiando un select, filtrand), se hace una petición AJAX al servidor, Filament procesa la lógica en PHP y devuelve solo el HTML actualizado. Rara vez se escribe JavaScript
Flujo de desarrollo con Filament
- Instalasr Filament en el proyecto Laravel:
composer require filament/filament:"^5.0" -W php artisan filament:install --panels - Se creas un Recurso:
php artisan make:filament-resource Producto --generate //El --generate crea automáticamente el formulario y tabla basándose en las columnas de la migración - Personalizar el Recurso según se necesite (agregar relaciones, campos dependientes, acciones personalizadas, etc.).
- Acceder al panel (normalmente en /admin) y ya se tiene un CRUD completo y bonito.
Ventajas principales
- Velocidad de desarrollo brutal: puedes tener un backoffice completo en horas/días en vez de semanas.
- UI muy moderna y profesional por defecto.
- Altamente personalizable (temas, plugins, componentes custom).
- Excelente soporte para multi-tenancy (aplicaciones SaaS).
- Ecosistema de plugins muy grande (charts, spatie permissions, media library, etc.).
- Se pueden usar los componentes de Filament fuera de un panel (en cualquier vista Blade o Livewire).
¿Para qué se usa más?
- Paneles de administración clásicos.
- CRMs.
- Sistemas de gestión interna (inventarios, empleados, pedidos).
- Aplicaciones SaaS completas.
- Dashboards analíticos.
- Portales de clientes/usuarios.
Cambiar url del panel
Como se ha dicho en este tutorial, se pueden crear varios paneles y para cambiar la URL del panel creado con Laravel Filament, hay editar el archivo del Panel Provider:- Abrir el archivo del panel que quieres modificar. Normalmente se encuentra en: "app/Providers/Filament/AdminPanelProvider.php". Si existen varios paneles, puede ser "AppPanelProvider.php", "UserPanelProvider.php", etc.).
- Buscar el método "panel()" y agregar o modificar la línea "->path()":
use Filament\Panel; public function panel(Panel $panel): Panel { return $panel ->default() ->id('admin') ->path('admin') // ← Aquí cambias la URL // otras configuraciones... ->login() ->passwordReset() ->etc(); }
Después de cambiar la URL
Es necesario ejecuta estos comandos para limpiar caché:php artisan filament:cache-components
php artisan cache:clear
php artisan route:clear
php artisan config:clear