Saltar al contenido principal

Páginas personalizadas de recursos

Introducción

Filament te permite crear páginas completamente personalizadas para los recursos. Para crear una nueva página, puedes usar:

php artisan make:filament-page SortUsers --resource=UserResource --type=custom

Este comando creará dos archivos: una clase de página en el directorio /Pages de tu recurso y una vista en el directorio /pages de las vistas del recurso.

Debes registrar las páginas personalizadas en una ruta dentro del método estático getPages() de tu recurso:

public static function getPages(): array
{
return [
// ...
'sort' => Pages\SortUsers::route('/sort'),
];
}
aviso

El orden de las páginas registradas en este método es importante: cualquier segmento comodín definido antes que rutas codificadas se corresponderá primero en el enrutador de Laravel.

Cualquier parámetro definido en la ruta estará disponible en la clase de la página, de manera idéntica a como funciona en Livewire.

Usar un registro de recurso

Si deseas crear una página que use un registro, similar a las páginas de Editar o Ver, puedes usar el trait InteractsWithRecord:

use Filament\Resources\Pages\Page;
use Filament\Resources\Pages\Concerns\InteractsWithRecord;

class ManageUser extends Page
{
use InteractsWithRecord;

public function mount(int | string $record): void
{
$this->record = $this->resolveRecord($record);
}

// ...
}

El método mount() debe resolver el registro desde la URL y almacenarlo en $this->record. Puedes acceder al registro en cualquier momento usando $this->getRecord() en la clase o en la vista.

Para añadir el registro como parámetro en la ruta, debes definir {record} en getPages():

public static function getPages(): array
{
return [
// ...
'manage' => Pages\ManageUser::route('/{record}/manage'),
];
}