gingerminds / symfony-media-manager
Media library, file library and image processing for Gingerminds Symfony projects
Package info
github.com/gingerminds/symfony-media-manager
Type:symfony-bundle
pkg:composer/gingerminds/symfony-media-manager
Requires
- php: ^8.4
- ext-zip: *
- api-platform/doctrine-orm: ^4.4
- api-platform/symfony: ^4.4
- doctrine/doctrine-bundle: ^2.18 || ^3.0
- doctrine/orm: ^3.5
- gingerminds/symfony-core: ^1.7
- league/flysystem-bundle: ^3.7
- league/glide: ^4.1
- symfony/asset-mapper: ^8.1
- symfony/doctrine-bridge: ^8.1
- symfony/form: ^8.1
- symfony/framework-bundle: ^8.1
- symfony/mime: ^8.1
- symfony/property-access: ^8.1
- symfony/security-bundle: ^8.1
- symfony/serializer: ^8.1
- symfony/string: ^8.1
- symfony/translation: ^8.1
- symfony/twig-bundle: ^8.1
- symfony/uid: ^8.1
- symfony/validator: ^8.1
Requires (Dev)
- dama/doctrine-test-bundle: ^8.2
- friendsofphp/php-cs-fixer: ^3.0
- league/flysystem-memory: ^3.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-doctrine: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^12.0
- rector/rector: ^2.0
- squizlabs/php_codesniffer: ^3.0
- symfony/browser-kit: ^8.1
- symfony/css-selector: ^8.1
- symfony/phpunit-bridge: ^8.1
- symfony/yaml: ^8.1
Suggests
- ext-gd: Alternative image driver of the presets (images.driver: gd)
- ext-imagick: Image driver of the presets (images.driver: imagick, default)
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-21 07:42:23 UTC
README
Media library, file library and image processing bundle for Gingerminds Symfony admin panels,
built on gingerminds/symfony-core — the
Symfony 8 counterpart of gingerminds/laravel-media-manager:
- a file library: the single place files are uploaded to, browsed, organised in folders and picked from, without duplicates, with the usages of every file (a used file cannot be deleted);
- medias (a file, a thumbnail, a category) and a media category tree, administered in the core admin;
- form types to pick files (
FilePickerType) and medias (MediaSelectType), ordered collections of medias; - image presets rendered by Glide, public file URLs (
/api/files/{id}/{preset}); - a public API of the medias and categories, and download baskets (ZIP);
- named storage disks (Flysystem), maintenance commands for imported databases.
Requires PHP 8.4, Symfony 8.1, Doctrine ORM 3, API Platform 4.4, league/flysystem-bundle,
league/glide and gingerminds/symfony-core ^1.6.
Installation
composer require gingerminds/symfony-media-manager
Then follow Installation (bundle, routes, storage, database, permissions).
Documentation
Getting started
- Installation
- Configuration — disks, library, presets, baskets, overriding the entities.
- Commands — image cache, folders, baskets, maintenance.
- Coming from laravel-media-manager — concept mapping, behaviour changes, importing a Laravel database.
Files & medias
- File library — uploads, folders, usages and references, duplicates, permissions.
- Medias — medias and media categories.
- Forms —
FilePickerType,MediaSelectType, collections of medias. - Images — Glide presets, URLs, cache.
API
Development
make install # composer install (Docker) make assets # importmap + sass of the test application make qa # phpstan, phpcs, phpunit make serve # test application on http://127.0.0.1:8000/admin
The test application (tests/Application) boots the core and the media manager bundles on SQLite,
with an in-memory storage, an Article (file and media fields, media links) and a Page (file ids
in a JSON field) exercising the references and the form types. APP_ENV=test php tests/Application/bin/console ...; the test_no_basket environment disables the baskets.