alengo/sulu-category-extra-bundle
Adds an “Additional Data” tab to Sulu CMS categories. Configure fields via a standard Sulu form XML file and store values as a JSON column on the existing ca_categories table (no extra tables). Tab title, form key, and resource key are configurable.
additionalData) to ca_categories via a doctrine:schema:update migration. No downtime if applied incrementally./admin/api/category-additional-data/{id}) for CRUD operations, ensuring security alignment with Sulu’s existing auth system.| Risk Area | Assessment | Mitigation Strategy |
|---|---|---|
| JSON Schema Validation | No built-in validation for JSON structure; relies on frontend form logic. | Enforce validation in form XML (e.g., required fields, enum constraints) and add Doctrine lifecycle callbacks for runtime checks. |
| Performance | JSON column queries may impact large category datasets. | Benchmark with 10K+ categories; optimize with partial indexing or materialized views if needed. |
| Backward Compatibility | Future Sulu updates may break custom form fields. | Test against Sulu 3.x minor versions; use feature flags for critical fields. |
| Twig Access Pattern | Requires direct entity loading for additionalData in some contexts. |
Document workarounds (e.g., DTOs, repository methods) and provide a Twig extension for convenience. |
additionalData column) be rolled out in a zero-downtime manner? (Yes, but test rollback.)config/bundles.php, routing_admin_api.yaml), easing adoption in existing projects.category_additional_data.xml) to match business requirements.composer require alengo/sulu-category-extra-bundleconfig/bundles.php.sulu_admin.yaml.php bin/console doctrine:schema:update --force (or use a custom migration for production).ca_categories.additionalData column exists (JSON type).config/packages/alengo_sulu_category_extra.yaml if needed (e.g., custom tab title).GET/PUT /admin/api/category-additional-data/{id}).SuluMediaBundle) since it extends the Category entity rather than overriding it.additionalData is indexed if used in search filters.additionalData.config/forms/category_additional_data.xml as part of the project.additionalData. Implement Doctrine event listeners for auditing or use Sulu’s revision system if available.form_key matches in XML and config.sulu_admin.yaml.bin/console debug:container to verify bundle registration.additionalData queries with doctrine:query-log.additionalData (e.g., via Sulu’s cache layer or Redis).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Corrupted JSON Data | Category becomes unusable. | Add Doctrine lifecycle callbacks to validate JSON on save. |
| Migration Failure | additionalData column missing. |
Use a custom migration with rollback support. |
| Form XML Syntax Errors | Tab fails to render. | Validate XML with xmllint and provide default fallback forms. |
| API Rate Limiting | High traffic breaks admin UI. | Implement queueing for bulk updates or increase Sulu’s API limits. |
| Sulu Upgrade Incompatibility | Bundle breaks after Sulu update. | Test against Sulu 3.x EOL and plan for forking if needed. |
How can I help you explore Laravel packages today?