symfony-cmf/media-bundle
Symfony CMF Media Bundle adds media management to Symfony CMF apps: upload, browse, edit, and organize images and documents with PHPCR-backed storage and integration into the CMF content framework.
Build-vs-buy for media handling — with a "no" as the default answer. This bundle's value proposition (upload via Symfony forms, image variations via Imagine, media documents stored in PHPCR-ODM and referenced from CMS content) is a solved problem in 2024 with commodity pieces: Flysystem or Laravel's filesystem for storage, Intervention Image / Glide / a CDN transform service for variations, and your existing relational or document store for asset metadata. The buy decision only pencils out if you are already running PHPCR-ODM.
Legacy CMS estate triage. If the org owns a Symfony CMF 1.x application, this is the media layer that app already depends on. That makes it a maintenance-cost input — fork-and-vendor, freeze, or migrate — rather than a greenfield technology choice.
Architecture decision: PHPCR-ODM, not "do we need a media bundle." PHPCR content repositories (Jackalope, Doctrine PHPCR-ODM) buy you a hierarchical content tree, workspace-level versioning, and reference integrity between content and assets. That is the actual product decision. If the roadmap doesn't require versioned, tree-structured content, PHPCR is a tax you should not pay, and this bundle goes with it.
Roadmap scoping on image variation requirements. The variation/thumbnail model is the one genuinely reusable idea here — "define named renditions once, request them by name from templates." That belongs in your media spec regardless of which library implements it. Copy the concept, not the code.
A correction that changes the decision: a prior internal note on this package frames it as a Laravel dependency and discusses composer require, config/app.php service providers, facades, and php artisan tinker. That note is wrong. Symfony bundles require the Symfony kernel and DI container; Laravel consumes Symfony components (HttpFoundation, Console, Finder) under a different contract. There is no integration path here, and the Symfony 3.0 compatibility in release 1.3.1 refers to Laravel 5.2/5.3 only in the sense that both happened to ship Symfony 3.0 components in 2016. Treat the Laravel angle as a documented false positive so it doesn't resurface in the next package review.
Risk register entry. 30 stars, archived, last release 2016-06-14. This is a "do not add to any new roadmap" line item, and a named dependency to be removed from existing ones on a schedule.
Consider it, narrowly, when all of the following are true:
composer.json.Look elsewhere — and expect this to be the answer most of the time — when:
Evaluation shortcut: the decision should take one meeting. If PHPCR-ODM is not already in the dependency graph, stop — the cost of introducing a content repository to justify a 30-star archived bundle is not a defensible line in any business case.
To executives: This is an archived Symfony CMS component last released in 2016, with no security patching, no active maintainers, and 30 GitHub stars. It is not a candidate for new investment and should not appear on any forward roadmap. The only live question is whether we currently pay to maintain it inside a legacy Symfony CMF application; if so, the recommendation is to budget a migration to commodity file storage plus an image-variation service rather than a fork. One housekeeping item: an earlier internal review mistakenly described this as a Laravel package. It is not — it cannot be installed into a Laravel application — so any work item that assumed otherwise should be closed, not resourced.
To engineering: Two things to align on. First, the integration premise in the prior note is incorrect — Symfony bundles need the Symfony kernel and container, and Laravel's use of Symfony components does not provide that; drop any spike around installing this in a Laravel app. Second, the honest assessment of the code: the reusable idea is the named-rendition variation model and PHPCR-backed media documents with content references. Everything else — the Imagine pipeline, the form integration, the Symfony 2.7/3.0 compatibility envelope — is dated and unmaintained. For anyone on a current PHP or Symfony line, the equivalent is a filesystem abstraction with a transform-on-request strategy; that is a small, well-understood build, and it removes a dependency we cannot get patches for. If we do have a PHPCR-CMF estate in production, the right move is to pin and isolate it behind our own media interface so the eventual swap touches one adapter rather than every caller. Either way, we should not be adding it anywhere new.
How can I help you explore Laravel packages today?