====== Filament ======
Filament es un framework de código abierto para [[informatica:programacion:php:frameworks:laravel|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.
* [[https://filamentphp.com/|Sitio oficial]]
===== 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'':
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.
* [[https://filamentphp.com/content/danharrin-panel-403-in-production|Why is my panel showing a 403 error in production?]]
===== Recursos =====
* [[https://heroicons.com/|Heroicons]]: iconos SVG de los creadores de Tailwind CSS.
* [[https://filamentphp.com/plugins|Filament plugins]]