kunstmaan/pagepart-bundle
Kunstmaan PagePartBundle is a Symfony bundle for building pages from reusable page parts. It offers configurable content blocks, admin management, and flexible templating for modular CMS pages.
Verdict up front: despite being catalogued as a Laravel/PHP package, kunstmaan/pagepart-bundle is a Symfony bundle, not a framework-agnostic library. It has no Laravel service provider, no facade, no container bindings, and no PSR-only entry point. Its last tagged release is 2014-09-04 (Symfony 2.x / PHP 5.4–5.5 era), it carries 16 stars and 0 dependents, and the parent Kunstmaan Bundles CMS project has been effectively unmaintained for years. The 0.38 score is consistent with that profile. This is a concept to borrow, not a dependency to install.
page_blocks polymorphic table. That is the realistic value here.| Path | Feasibility | Notes |
|---|---|---|
| Install into a Laravel app | Not feasible | Symfony-only; would drag in Symfony HttpKernel, Doctrine, and likely kunstmaan/admin-bundle / Sonata Admin |
| Install into a modern Symfony app (5/6/7) | Not feasible without a fork | 2014 code predates PHP 7 type declarations, Symfony 3 deprecations, and Doctrine 2.6+ |
| Stand up a legacy Symfony 2.3/2.5 app solely to use it | Technically possible | Requires PHP 5.6/7.0 runtime, EOL since 2018–2019; unacceptable for any supported production system |
| Reimplement the pattern in Laravel | Feasible, 4–8 eng-weeks | Polymorphic block table + per-page-type allowlist + admin block editor |
symfony/symfony 2.x fragments, doctrine/orm ~2.4, gedmo/doctrine-extensions, sonata-project/admin-bundle, and Kunstmaan sibling bundles — many with their own abandonment and known advisories.each(), removed mcrypt, string-offset semantics).NodeBundle, not here.)NodeTranslation/PageTranslation in the sibling bundles — not in this package alone.Page hasMany PagePart; PagePart has type, sequence, data, template.page_blocks(id, page_id, blockable_type, blockable_id, position) with one Eloquent model per block type. Closest to Kunstmaan's inheritance semantics, cleanest queries, best for typed validation.pages.blocks JSON array with a block-type registry/schema. Faster to ship, weaker referential integrity and harder to query media relations.There is no direct migration path from this package — no Laravel artifact, no data to migrate from unless we already run Kunstmaan. If we do run Kunstmaan:
PagePartRef ordering → position column.If we do not run Kunstmaan, skip 1–4 and go straight to the port.
PagePartAdmin context variables.NodeBundle — budget for it explicitly), accessibility pass on editor UI.kunstmaan org has moved on; the CMS is not a supported product line.| Mode | Likelihood (dependency) | Likelihood (port) | Mitigation |
|---|---|---|---|
| PHP 8 / framework upgrade blocked by package | Near-certain | N/A | Port; do not adopt |
| Unpatched transitive CVE | High | Low | Port; standard Dependabot |
| Block type proliferation with no governance | Medium | Medium | Registry with required owner + deprecation policy; cap the catalogue |
| Editor destroys page structure (no revisions) | Medium | Medium | Versioned page snapshots — this is the gap this bundle does not fill |
| Orphaned blocks after schema change | Medium | Medium | Migrations per block type; contract tests on serialized payloads |
| Rendering regressions on template edit | Medium | Medium | Visual regression tests on a fixture page per block type |
| Knowledge loss (Symfony 2 expertise) | High | N/A | Port |
AbstractPagePart, the page-part configuration and the admin form flow — and write a half-page design note translating it to our stack. This captures ~80% of the bundle's value at ~2% of the integration cost.How can I help you explore Laravel packages today?