Filament allows you to create completely custom pages for resources. To create a new page, you can use:
php artisan make:filament-page SortUsers --resource=UserResource --type=customThis command will create two files - a page class in the /Pages directory of your resource directory, and a view in the /pages directory of the resource views directory.
You must register custom pages to a route in the static getPages() method of your resource:
public static function getPages(): array
{
return [
// ...
'sort' => Pages\SortUsers::route('/sort'),
];
}The order of pages registered in this method matters - any wildcard route segments that are defined before hard-coded ones will be matched by Laravel's router first.
Any parameters defined in the route's path will be available to the page class, in an identical way to Livewire.
If you'd like to create a page that uses a record similar to the Edit or View pages, you can use the InteractsWithRecord trait:
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);
}
// ...
}The mount() method should resolve the record from the URL and store it in $this->record. You can access the record at any time using $this->getRecord() in the class or view.
To add the record to the route as a parameter, you must define {record} in getPages():
public static function getPages(): array
{
return [
// ...
'manage' => Pages\ManageUser::route('/{record}/manage'),
];
}