PHPackages                             mandarinmedien/mmmmediabundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. mandarinmedien/mmmmediabundle

ActiveSymfony-bundle[File &amp; Storage](/categories/file-storage)

mandarinmedien/mmmmediabundle
=============================

YAMB -&gt; Yet another Media bundle

3.0.0(4y ago)01911[1 issues](https://github.com/Mandarin-Medien/MMMediaBundle/issues)2MITPHP

Since Jan 14Pushed 2y ago3 watchersCompare

[ Source](https://github.com/Mandarin-Medien/MMMediaBundle)[ Packagist](https://packagist.org/packages/mandarinmedien/mmmmediabundle)[ RSS](/packages/mandarinmedien-mmmmediabundle/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (2)Dependencies (2)Versions (49)Used By (2)

MMMediaBundle
=============

[](#mmmediabundle)

### Append to app/AppKernel.php

[](#append-to-appappkernelphp)

```
...
    public function registerBundles()
    {
        $bundles = array(
            ...
            new MandarinMedien\MMMediaBundle\MMMediaBundle(),
            ...
            );
    ....
    }
...

```

### Append to app/config/config.yml

[](#append-to-appconfigconfigyml)

```
...
imports:
    - { resource: '@MMMediaBundle/Resources/config/config.yml' }
...

```

### Append to App/config/routing.yml

[](#append-to-appconfigroutingyml)

```
...
mm_media:
    resource: "@MMMediaBundle/Resources/config/routing.yml"
    prefix:   /mmmedia
...

```

### Create web/media folder to store images

[](#create-webmedia-folder-to-store-images)

```
...
shell: mkdir PROJECT_ROOT/web/media
...

```

### Use MMMediaBundle in your Entities

[](#use-mmmediabundle-in-your-entities)

You need to use the MediaSortable Entity of this bundle to have sortable Media. For a collection of media, use an unidirectional manyToMany-association and for single media an unidirectional oneToOne. To avoid garbage in your database, make sure to set the orphanRemoval flag.

#### eg. yaml configuration for single media:

[](#eg-yaml-configuration-for-single-media)

```
...
    oneToOne:
        titleImage:
            targetEntity: MandarinMedien\MMMediaBundle\Entity\MediaSortable
            cascade:
              - persist
              - remove
...

```

#### eg. yaml configuration for media collection:

[](#eg-yaml-configuration-for-media-collection)

```
...
    manyToMany:
        medias:
            targetEntity: MandarinMedien\MMMediaBundle\Entity\MediaSortable
            orderBy: { 'position': 'ASC' }
            joinColumn:
                name: media_sortable_id
                referencedColumnName: id
            cascade:
                - persist
                - remove
            orphanRemoval: true
...

```

### Add all needed Assets to your layout

[](#add-all-needed-assets-to-your-layout)

To make the MMMediaBundle-UploadWidget work properly you need to add the necessary CSS and the JS files. Your can just copy this part below or add @mmmedia\_assets\_css and @mmmedia\_assets\_js into your asset calls.

#### Twig-Example:

[](#twig-example)

```
...
    {% stylesheets '@mmmedia_assets_css' %}

    {% endstylesheets %}

    {% javascripts '@mmmedia_assets_js' %}

    {% endjavascripts %}
...

```

### FormType Options

[](#formtype-options)

```
...

    $builder
        ->add('medias', 'mmmedia_upload_collection', array(

            // optional: configure allowed filetypes by file-extensions
            'allowed_filetypes' => array(
                '.jpg', '.png', '.gif'
            )

        ));

...

```

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity76

Established project with proven stability

 Bus Factor1

Top contributor holds 94.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~49 days

Total

47

Last Release

1532d ago

Major Versions

0.1.5.3 → 1.02016-07-14

1.0 → 2.02016-07-14

2.2.15 → 3.0.02022-04-14

### Community

Maintainers

![](https://www.gravatar.com/avatar/9811ec9b7fcee9da692627443ecae5c26d5c00d84416fd0e231c021fc45e9682?d=identicon)[MM-Psiiirus](/maintainers/MM-Psiiirus)

---

Top Contributors

[![clrfrks](https://avatars.githubusercontent.com/u/15800103?v=4)](https://github.com/clrfrks "clrfrks (51 commits)")[![pinkpiss](https://avatars.githubusercontent.com/u/23471265?v=4)](https://github.com/pinkpiss "pinkpiss (2 commits)")[![latenzio](https://avatars.githubusercontent.com/u/8480072?v=4)](https://github.com/latenzio "latenzio (1 commits)")

---

Tags

media bundle

### Embed Badge

![Health badge](/badges/mandarinmedien-mmmmediabundle/health.svg)

```
[![Health](https://phpackages.com/badges/mandarinmedien-mmmmediabundle/health.svg)](https://phpackages.com/packages/mandarinmedien-mmmmediabundle)
```

###  Alternatives

[knplabs/knp-gaufrette-bundle

Allows to easily use the Gaufrette library in a Symfony project

72429.6M99](/packages/knplabs-knp-gaufrette-bundle)[sonata-project/media-bundle

Symfony SonataMediaBundle

4625.6M73](/packages/sonata-project-media-bundle)[gaufrette/aws-s3-adapter

Aws adapter for Gaufrette

282.7M8](/packages/gaufrette-aws-s3-adapter)[gaufrette/extras

Provides extra features (prefixed fs, resolvable fs) to Gaufrette

222.4M8](/packages/gaufrette-extras)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
