AdminPanelProvider.php
TLDR
This file is an implementation of the PanelProvider
class in the Filament package. It provides the configuration for the Filament admin panel, including defining pages, widgets, navigation groups, middleware, and plugins.
Classes
AdminPanelProvider
This class extends the PanelProvider
class from the Filament package. It is responsible for configuring and customizing the Filament admin panel. It provides the following features:
- Defines the default panel configuration.
- Specifies the login page class.
- Discovers and registers resources, pages, and widgets.
- Sets the brand logo and logo height.
- Defines navigation groups.
- Configures database notifications.
- Applies middleware.
- Configures authentication middleware.
- Registers a plugin for handling translatable fields.
The panel
method is the entry point for configuring the admin panel. It accepts a Panel
instance and returns the configured panel.
END
<?php
namespace App\Providers\Filament;
use App\Filament\Pages\Auth\Login;
use App\Filament\Pages\Dashboard;
use App\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Panel;
use Filament\PanelProvider;
use Filament\SpatieLaravelTranslatablePlugin;
use Filament\Widgets;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Session\Middleware\AuthenticateSession;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\View\Middleware\ShareErrorsFromSession;
class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->login(Login::class)
->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
->pages([
Dashboard::class,
])
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')
->widgets([
Widgets\AccountWidget::class,
Widgets\FilamentInfoWidget::class,
])
->brandLogo(fn () => view('filament.app.logo'))
->brandLogoHeight('1.25rem')
->navigationGroups([
'Shop',
'Blog',
])
->databaseNotifications()
->middleware([
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
AuthenticateSession::class,
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
DisableBladeIconComponents::class,
DispatchServingFilamentEvent::class,
])
->authMiddleware([
Authenticate::class,
])
->plugin(
SpatieLaravelTranslatablePlugin::make()
->defaultLocales(['en', 'es', 'nl']),
);
}
}