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:

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

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