Tabla de Contenidos
Filament
Filament es un framework de código abierto para Laravel que permite construir paneles de administración modernos y elegantes de forma rápida. Es ideal para crear interfaces de administración (CRUDs, dashboards, etc.) sin necesidad de escribir código frontend complejo.
Tecnologías principales
Filament se construye sobre varias tecnologías:
- Laravel: framwork PHP que Filament utiliza para aprovechar características como Eloquent ORM, migraciones, autenticación, y la estructura MVC de Laravel.
- Livewire: para crear componentes dinámicos sin escribir JavaScript puro.
- Alpine.js: proporciona interactividad ligera en el frontend (menús desplegables, modales, etc.).
- Tailwind CSS: Framework de estilos utilizado para diseñar todos los componentes.
- Blade: los componentes de Filament están construidos con plantillas de Blade, lo que permite extenderlos fácilmente.
- Heroicons: biblioteca de iconos utilizada en los componentes de la interfaz (botones, menús, etc.).
Instalación
Una vez dentro de nuestro proyecto Laravel, ejecutamos:
composer require filament/filament:"^3.3" -W
Y ahora instalamos el constructor de paneles de Filament:
php artisan filament:install --panels
El comando anterior preinstalará también el creador de formularios, tablas, notificaciones, acciones, listas de información y paquetes de widgets.
Nos aseguramos de haber ejecutado las migraciones (para tener la tabla de usuarios):
php artisan migrate
Creación de usuarios
php artisan make:filament-user
Paneles
Los paneles son los contenedores principales en Filament. Estos paneles permiten incluir páginas, recursos, formularios, tablas, notificaciones, acciones….
Todos los paneles incluyen un dashboard por defecto donde poder incluir widgets con estadísticas, gráficas, tablas y más.
Tablas
Formularios
Plugins
- Excel Export: exportación de datos en fichero Excel.
- Curator: para gestionar multimedia.
- Spatie Laravel Backup: permite hacer una copia de seguridad de nuestra aplicación.
- Spatie Laravel Health: revisión de la salud de nuestra aplicación.
- Jobs monitor: monitoriza las colas desde un panel.
Error 403 en producción
Al indicar que el proyecto se ejecutará en producción mediante el fichero .env:
APP_ENV=production
Filament devolverá un error 403 al iniciar sesión en el panel de administración. Es el comportamiento esperado. Si queremos cambiarlo, hay que modificar el modelo app/Models/User.php:
<?php namespace App\Models; use Filament\Models\Contracts\FilamentUser; use Filament\Panel; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements FilamentUser { // ... public function canAccessPanel(Panel $panel): bool { return str_ends_with($this->email, '@yourdomain.com') && $this->hasVerifiedEmail(); } }
En el ejemplo anterior, solo permitiríamos el acceso al panel a las cuentas cuyo dominio fuesen yourdomain.com y tuvieran el e-mail verificado.
Recursos
- Heroicons: iconos SVG de los creadores de Tailwind CSS.
