Panel Builder - Resources
Custom pages
Overview
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=custom
This 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.
Using a resource record
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'), ];}
Edit on GitHubStill need help? Join our Discord community or open a GitHub discussion