Installation
composer require inerba/filament-db-config
Publish the migration and config:
php artisan vendor:publish --provider="Inerba\FilamentDbConfig\FilamentDbConfigServiceProvider" --tag="migrations"
php artisan vendor:publish --provider="Inerba\FilamentDbConfig\FilamentDbConfigServiceProvider" --tag="config"
Run migrations:
php artisan migrate
Register Plugin
Add to app/Providers/Filament/AdminPanelProvider.php:
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
\Inerba\FilamentDbConfig\FilamentDbConfigPlugin::make(),
]);
}
First Use Case
Define a config group in config/filament-db-config.php:
'groups' => [
'app_settings' => [
'label' => 'App Settings',
'fields' => [
[
'name' => 'site_name',
'label' => 'Site Name',
'type' => 'text',
],
[
'name' => 'maintenance_mode',
'label' => 'Maintenance Mode',
'type' => 'boolean',
],
],
],
],
Access values in code:
$siteName = config('filament-db-config.app_settings.site_name');
Config Management
payment_gateways, email_templates) by extending the config array.rich-editor, select, repeater) for complex configurations.
'fields' => [
[
'name' => 'social_media',
'label' => 'Social Links',
'type' => 'repeater',
'fields' => [
['name' => 'platform', 'type' => 'select', 'options' => ['twitter', 'facebook']],
['name' => 'url', 'type' => 'url'],
],
],
],
Caching
'cache' => [
'enabled' => true,
'ttl' => 60, // Cache TTL in minutes
],
ConfigUpdated).Page Generation
\Inerba\FilamentDbConfig\FilamentDbConfig::generatePages();
FilamentDbConfigPage:
use Inerba\FilamentDbConfig\Pages\FilamentDbConfigPage;
class CustomConfigPage extends FilamentDbConfigPage
{
protected static string $group = 'app_settings';
protected static string $navigationIcon = 'heroicon-o-cog';
}
Integration with Filament Forms/Tables
FilamentDbConfig in forms:
use Inerba\FilamentDbConfig\Facades\FilamentDbConfig;
$form->components([
FilamentDbConfig::make('app_settings.site_name')
->label('Configure Site Name'),
]);
Environment-Specific Configs
config/filament-db-config.php:
'environments' => [
'local' => [
'app_settings' => [
'debug_mode' => true,
],
],
],
Validation Rules
'fields' => [
[
'name' => 'max_upload_size',
'type' => 'number',
'validation' => 'required|min:1|max:50',
],
],
Event Listeners
FilamentDbConfig::listen('config.updated', function ($group, $key) {
if ($group === 'app_settings' && $key === 'queue_restart') {
Artisan::call('queue:restart');
}
});
Multi-Tenant Support
Config model:
class TenantConfig extends \Inerba\FilamentDbConfig\Models\Config
{
public function tenant()
{
return $this->belongsTo(Tenant::class);
}
}
Cache Invalidation
ConfigUpdated event:
FilamentDbConfig::clearCache('app_settings');
'cache.enabled' => false).Field Type Mismatches
boolean stored as string).casts in the Config model or validate on retrieval:
$value = FilamentDbConfig::get('app_settings.maintenance_mode', false);
Migration Conflicts
Config model migrations may conflict.php artisan vendor:publish --tag="filament-db-config-migrations"
Permission Handling
\Inerba\FilamentDbConfig\FilamentDbConfigPlugin::make()
->middleware([\Spatie\Permission\Middlewares\PermissionsMiddleware::class]),
Log Config Updates
config/filament-db-config.php:
'debug' => [
'log_updates' => true,
],
storage/logs/laravel.log.Validate Config Structure
php artisan filament-db-config:validate
Inspect Database
filament_db_configs table:
SELECT * FROM filament_db_configs WHERE group_name = 'app_settings';
Custom Field Types
FilamentDbConfigField to add custom fields:
class CustomField extends FilamentDbConfigField
{
protected static string $type = 'custom_field';
public static function make(): static
{
return new static();
}
}
Override Default Behavior
Config model or repository:
FilamentDbConfig::setConfigModel(CustomConfigModel::class);
Add Custom Actions
FilamentDbConfigPage to add bulk actions:
use Inerba\FilamentDbConfig\Pages\FilamentDbConfigPage;
class ExtendedConfigPage extends FilamentDbConfigPage
{
public static function getActions(): array
{
return [
Tables\Actions\Action::make('export')
->action(fn () => Export::download(...)),
];
}
}
Localization
// resources/lang/en/filament-db-config.php
return [
'app_settings' => [
'site_name' => [
'label' => 'Custom Site Name Label',
],
],
];
How can I help you explore Laravel packages today?