districtweb/cmsconfiguratorbundle
Symfony bundle for building and managing application configuration via a “configurator” approach. Provides structure to define, load, and persist configurable settings for your CMS or app, with tooling aimed at simplifying configuration workflows.
.env, config/) and packages like spatie/laravel-config-array already handle dynamic configurations, reducing the need for this bundle unless Symfony-specific features (e.g., YAML/XML configs) are explicitly required.ParameterBag and YamlFileLoader conflicts with Laravel’s preference for filesystem-based configs and environment variables, potentially introducing redundancy or performance overhead.symfony/http-kernel) or a custom Laravel service provider to map Symfony’s dependency injection to Laravel’s container.kernel.request) may not align with Laravel’s middleware pipeline, necessitating adapters or custom event listeners.Config, Yaml) may conflict with Laravel’s versions or introduce compatibility issues.spatie/laravel-config-array)?config/ and .env systems? Will it replace, augment, or operate in parallel?config:cache)?symfony/http-kernel.Container to Laravel’s Service Container.spatie/laravel-config-array (dynamic configs from arrays/JSON).orchid/software (admin panel with configurable entities).laravel-backup (for config-backed backups).config/ with a database-backed layer (e.g., configurable table) using Eloquent or a package like spatie/laravel-config-array.Container to Laravel’s container.$this->app->singleton('configurator', function ($app) {
$symfonyContainer = new \Symfony\Component\DependencyInjection\ContainerBuilder();
// Load Symfony configs (e.g., YAML) into the container.
return new \DistrictWeb\CmsConfiguratorBundle\Service\Configurator($symfonyContainer);
});
config/ or a database table (e.g., configurations).Schema::create('configurations', function (Blueprint $table) {
$table->id();
$table->string('key')->unique();
$table->text('value');
$table->timestamps();
});
ConfigLoaded event to sync bundle configs with Laravel’s cache.use Illuminate\Config\ConfigLoaded;
public function handle(ConfigLoaded $event) {
$dbConfigs = DB::table('configurations')->get();
config($dbConfigs->toArray());
}
database config aligns (e.g., same PDO drivers, schema).kernel.request). Laravel’s middleware pipeline may require adapters to forward events.config:cache may overwrite or conflict with dynamic configs from the bundle, requiring custom cache invalidation logic.| Phase | Task | Owner | Dependencies |
|---|---|---|---|
| Discovery | Define use case (e.g., "dynamic CMS configs" vs. existing Laravel tools). | TPM/Dev Lead | Business requirements |
| Prototype | Test bundle in Symfony sub-app or rewrite core logic in Laravel. | Backend Dev | Symfony/Laravel dev environment |
| Architecture | Design integration (e.g., bridge vs. rewrite). | TPM/Architect | Prototype results |
| Implementation | Build adapter layer (container, config mapping, event listeners). | Backend Dev | Architecture decisions |
| Testing | Validate configs, performance, and edge cases (e.g., cache invalidation). | QA/Dev | Implementation |
| Deployment | Roll out in staging; monitor for config conflicts. | DevOps/TPM | Test results |
| Optimization | Profile performance; refine caching strategy. | Backend Dev | Production feedback |
| Documentation | Create internal docs for maintenance and onboarding. | TPM/Dev | Implementation |
How can I help you explore Laravel packages today?