filament/spatie-laravel-settings-plugin
Filament plugin to manage app settings stored with spatie/laravel-settings. Generate settings pages, build forms with Filament fields that map to your settings class properties, and automatically load/save values from the database with minimal setup.
Strengths:
spatie/laravel-settings for centralized, structured configuration management, aligning with Laravel’s modularity.Fit for Use Cases:
Prerequisites:
spatie/laravel-settings must be installed as a dependency (handled automatically via the plugin).Key Dependencies:
Customization Points:
Settings::extend() or custom Filament resources.Medium Risk:
spatie/laravel-settings may alter migrations (e.g., adding columns).Settings::for() guards where needed.Mitigation:
Use Case Alignment:
Filament Compatibility:
Data Layer:
laravel-audit integration.)DevOps:
Settings::group() or separate configs.)Alternatives:
Core Stack:
spatie/laravel-settings and Filament v3.settings_cache_driver in .env.Additional Tools:
Conflicts:
Pre-Integration:
config/app.php).configurations table).Settings::set() to backfill existing values.Settings::set('app.name', config('app.name'));
Settings::set('mail.from.address', config('mail.from.address'));
Installation:
composer require filament/spatie-laravel-settings-plugin
php artisan vendor:publish --tag="filament-settings-plugin-assets"
php artisan migrate
Configuration:
config/filament-settings.php:
'settings' => [
'app' => [
'name' => 'string',
'timezone' => 'string',
],
'mail' => [
'from' => [
'address' => 'string',
'name' => 'string',
],
],
],
AppServiceProvider:
use Filament\Settings\SettingsGroup;
use Spatie\LaravelSettings\Settings;
public function boot(): void
{
Settings::group('app', function (SettingsGroup $group) {
$group->addTextEntry('name');
$group->addSelectEntry('timezone', [
'UTC' => 'UTC',
'America/New_York' => 'New York',
]);
});
}
UI Setup:
/admin/settings).SettingsPage class.Post-Integration:
Settings::get() calls:
$appName = Settings::get('app.name');
config/app.php) via Laravel’s config caching.Laravel Ecosystem:
spatie/laravel-permission for role-based settings access).AppServiceProvider or a dedicated SettingsServiceProvider.Settings::fake() in PHPUnit tests.Frontend:
route('filament.settings')).window.__settings__ for performance.Multi-Tenancy:
Settings::for($tenant) if using stancl/tenancy or similar.tenants.{id}.settings).Phase 1: Core Integration (1–2 weeks):
Phase 2: Customization (1 week):
Phase 3: Rollout (1 week):
Phase 4: Optimization (Ongoing):
How can I help you explore Laravel packages today?