PHPackages                             ajay/sylius-media-hub-plugin - 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. [Image &amp; Media](/categories/media)
4. /
5. ajay/sylius-media-hub-plugin

ActiveSylius-plugin[Image &amp; Media](/categories/media)

ajay/sylius-media-hub-plugin
============================

Centralized Sylius admin dashboard for product and taxon images.

1.1.0(1mo ago)11↓85.7%MITPHPPHP ^8.2CI failing

Since Jun 8Pushed 1mo agoCompare

[ Source](https://github.com/ajsymfony/sylius-media-hub-plugin)[ Packagist](https://packagist.org/packages/ajay/sylius-media-hub-plugin)[ RSS](/packages/ajay-sylius-media-hub-plugin/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (1)Dependencies (10)Versions (3)Used By (0)

Sylius Media Hub Plugin
=======================

[](#sylius-media-hub-plugin)

Sylius Media Hub is a Sylius admin plugin for auditing Product and Taxon images from one screen. It is designed for catalog teams who need quick visibility into image coverage, missing assets, and direct navigation back to the standard Sylius edit flows.

Scope
-----

[](#scope)

This plugin is intended to be:

- a catalog image audit tool
- a read-only media visibility dashboard
- a productivity layer for Sylius administrators

It is not intended to be:

- a DAM
- a CMS
- an image editor
- a replacement for native Sylius image management

Compatibility
-------------

[](#compatibility)

- PHP `^8.2`
- Symfony `^6.4 || ^7.0`
- Sylius `^2.0`

Features
--------

[](#features)

- consolidated Product and Taxon image dashboard
- statistics for total, Product, Taxon, and missing images
- dedicated Product, Taxon, and Missing views
- server-side search, sorting, and pagination
- direct links to native Sylius Product and Taxon edit pages
- read-only catalog auditing with no entity overrides or schema changes

Architecture
------------

[](#architecture)

The plugin reads from existing Sylius catalog models and keeps core image entities untouched.

Design principles:

- no entity overrides
- no database migrations
- no frontend asset build step
- native Symfony service wiring
- native Sylius admin menu integration
- Sylius Grid used for the missing-images table

Installation
------------

[](#installation)

### 1. Add the repository

[](#1-add-the-repository)

If the package is not yet published on Packagist, add the VCS repository to the host project:

```
{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/ajsymfony/sylius-media-hub-plugin.git"
    }
  ]
}
```

### 2. Require the plugin

[](#2-require-the-plugin)

```
composer require ajay/sylius-media-hub-plugin:dev-master
```

### 3. Register the bundle

[](#3-register-the-bundle)

Add the bundle to `config/bundles.php`:

```
return [
    // ...
    Ajay\SyliusMediaHubPlugin\SyliusMediaHubPlugin::class => ['all' => true],
];
```

### 4. Add the routes in a dedicated route file

[](#4-add-the-routes-in-a-dedicated-route-file)

Create `config/routes/ajay_sylius_media_hub.yaml`:

```
ajay_sylius_media_hub_admin_index:
    path: /admin/media-hub
    controller: Ajay\SyliusMediaHubPlugin\Controller\MediaHubController::index
    methods: [GET]

ajay_sylius_media_hub_admin_products:
    path: /admin/media-hub/products
    controller: Ajay\SyliusMediaHubPlugin\Controller\MediaHubController::products
    methods: [GET]

ajay_sylius_media_hub_admin_taxons:
    path: /admin/media-hub/taxons
    controller: Ajay\SyliusMediaHubPlugin\Controller\MediaHubController::taxons
    methods: [GET]

ajay_sylius_media_hub_admin_missing:
    path: /admin/media-hub/missing
    controller: Ajay\SyliusMediaHubPlugin\Controller\MediaHubController::missing
    methods: [GET]
```

### 5. Clear cache

[](#5-clear-cache)

```
php bin/console cache:clear
```

What the plugin adds
--------------------

[](#what-the-plugin-adds)

- bundle registration in `config/bundles.php`
- route entries in `config/routes/ajay_sylius_media_hub.yaml`
- optional configuration in `config/packages/ajay_sylius_media_hub.yaml`

Route design
------------

[](#route-design)

The plugin exposes fixed admin routes:

- `/admin/media-hub`
- `/admin/media-hub/products`
- `/admin/media-hub/taxons`
- `/admin/media-hub/missing`

Why this design:

- the Media Hub routes stay isolated from core Sylius admin routes
- the controller stays free of route attributes
- it avoids environment-specific prefix issues during route compilation

Configuration
-------------

[](#configuration)

The plugin works without additional configuration. Optional configuration:

```
# config/packages/ajay_sylius_media_hub.yaml
ajay_sylius_media_hub:
    default_limit: 24
    pagination_limits: [24, 48, 96]
```

Configuration reference:

- `default_limit`: default page size; must be present in `pagination_limits`
- `pagination_limits`: page sizes offered in the admin UI

Security
--------

[](#security)

- all routes are admin routes
- access is protected by `ROLE_ADMINISTRATION_ACCESS`
- the menu entry is added to the Sylius admin Catalog section
- no extra ACL tables or custom permission schema are introduced

Verification
------------

[](#verification)

After installation, confirm:

```
php bin/console debug:router ajay_sylius_media_hub_admin_index --no-debug
php bin/console debug:container Ajay\\SyliusMediaHubPlugin\\Controller\\MediaHubController --no-debug
```

Expected route names:

- `ajay_sylius_media_hub_admin_index`
- `ajay_sylius_media_hub_admin_products`
- `ajay_sylius_media_hub_admin_taxons`
- `ajay_sylius_media_hub_admin_missing`

Expected UI behavior:

- `Catalog > Media Hub` appears in the admin menu
- `/admin/media-hub` loads for authenticated administrators
- Product and Taxon edit actions open standard Sylius admin screens

Template overrides
------------------

[](#template-overrides)

To customize the UI from the host app, override templates under:

```
templates/bundles/SyliusMediaHubPlugin/

```

Testing
-------

[](#testing)

Run the plugin test suite from the project root:

```
vendor/bin/phpunit -c vendor/ajay/sylius-media-hub-plugin/phpunit.xml.dist
```

Troubleshooting
---------------

[](#troubleshooting)

If the menu entry does not appear:

- confirm the bundle is registered in `config/bundles.php`
- confirm `config/routes/ajay_sylius_media_hub.yaml` exists
- clear cache
- verify you are logged in as an administrator

[![image](https://private-user-images.githubusercontent.com/37686115/605755036-cbc25e8f-b63e-4f53-82e7-7dafe17f6e8e.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ3NzkxMDksIm5iZiI6MTc4NDc3ODgwOSwicGF0aCI6Ii8zNzY4NjExNS82MDU3NTUwMzYtY2JjMjVlOGYtYjYzZS00ZjUzLTgyZTctN2RhZmUxN2Y2ZThlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIzVDAzNTMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgwNTJmNGVmZmFjYmIzNzRkY2I4OWQ2YzgwN2UxMTFmYmY2MjAyNDNiOThhYzU3M2Q3OTMwODc5ZTUyYTM0OGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.TUB93MR0uGet_Y1ZVEam3PMi8anjeHraICkXBsWCOio)](https://private-user-images.githubusercontent.com/37686115/605755036-cbc25e8f-b63e-4f53-82e7-7dafe17f6e8e.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ3NzkxMDksIm5iZiI6MTc4NDc3ODgwOSwicGF0aCI6Ii8zNzY4NjExNS82MDU3NTUwMzYtY2JjMjVlOGYtYjYzZS00ZjUzLTgyZTctN2RhZmUxN2Y2ZThlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIzVDAzNTMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgwNTJmNGVmZmFjYmIzNzRkY2I4OWQ2YzgwN2UxMTFmYmY2MjAyNDNiOThhYzU3M2Q3OTMwODc5ZTUyYTM0OGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.TUB93MR0uGet_Y1ZVEam3PMi8anjeHraICkXBsWCOio)Search products/taxons by name /slug [![image](https://private-user-images.githubusercontent.com/37686115/605764830-5c88871f-089f-4424-ae4f-ef22de33cfd4.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ3NzkxMDksIm5iZiI6MTc4NDc3ODgwOSwicGF0aCI6Ii8zNzY4NjExNS82MDU3NjQ4MzAtNWM4ODg3MWYtMDg5Zi00NDI0LWFlNGYtZWYyMmRlMzNjZmQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIzVDAzNTMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYyYzZkNzI0ODU0NTNlZmUwMzBjNGU2OTAyYWEyZjNlNjAwY2M1ZDUxODZhMzZlODU1Y2IxMTEyYTJiNzczMDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.MryS25QTIlR6hZ-SavNd9O08Hr570rk1vPCx7sw1Dts)](https://private-user-images.githubusercontent.com/37686115/605764830-5c88871f-089f-4424-ae4f-ef22de33cfd4.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ3NzkxMDksIm5iZiI6MTc4NDc3ODgwOSwicGF0aCI6Ii8zNzY4NjExNS82MDU3NjQ4MzAtNWM4ODg3MWYtMDg5Zi00NDI0LWFlNGYtZWYyMmRlMzNjZmQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIzVDAzNTMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYyYzZkNzI0ODU0NTNlZmUwMzBjNGU2OTAyYWEyZjNlNjAwY2M1ZDUxODZhMzZlODU1Y2IxMTEyYTJiNzczMDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.MryS25QTIlR6hZ-SavNd9O08Hr570rk1vPCx7sw1Dts)

Missing Images
==============

[](#missing-images)

[![image](https://private-user-images.githubusercontent.com/37686115/605764230-078972f0-c375-41b9-a24d-03f78c0704ce.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ3NzkxMDksIm5iZiI6MTc4NDc3ODgwOSwicGF0aCI6Ii8zNzY4NjExNS82MDU3NjQyMzAtMDc4OTcyZjAtYzM3NS00MWI5LWEyNGQtMDNmNzhjMDcwNGNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIzVDAzNTMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNjYzViNGFhY2FlYmY1NDM5NmNmNzViZTk1MWY0M2E3N2VlMGU1ZmJkMTE2OTk3N2QyMjNiOTJiOTdkZDgzMjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.DCLkZ0YZCtAT54B6DW9mNcdEl52u7tWaHwki_piAjws)](https://private-user-images.githubusercontent.com/37686115/605764230-078972f0-c375-41b9-a24d-03f78c0704ce.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ3NzkxMDksIm5iZiI6MTc4NDc3ODgwOSwicGF0aCI6Ii8zNzY4NjExNS82MDU3NjQyMzAtMDc4OTcyZjAtYzM3NS00MWI5LWEyNGQtMDNmNzhjMDcwNGNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIzVDAzNTMyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNjYzViNGFhY2FlYmY1NDM5NmNmNzViZTk1MWY0M2E3N2VlMGU1ZmJkMTE2OTk3N2QyMjNiOTJiOTdkZDgzMjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.DCLkZ0YZCtAT54B6DW9mNcdEl52u7tWaHwki_piAjws)If the route is missing:

- confirm the Media Hub routes are defined in `config/routes/ajay_sylius_media_hub.yaml`
- run `php bin/console debug:router ajay_sylius_media_hub_admin_index --no-debug`

If you are redirected to login:

- make sure you are visiting `/admin/media-hub`, not `/media-hub`
- verify the current user has `ROLE_ADMINISTRATION_ACCESS`
- verify the route is registered under `/admin/...`

If the package is lost after Composer operations:

- ensure the host project keeps `ajay/sylius-media-hub-plugin` in root `composer.json`
- install the plugin through Composer from a VCS repo, path repo, or published package rather than editing `vendor/` manually

Future extension points
-----------------------

[](#future-extension-points)

- inline image replacement or upload flows
- bulk replacement workflows
- duplicate or unused image detection
- large-image and format audits
- AI-assisted media enrichment

Maintainer
----------

[](#maintainer)

- Ajay Singh
- `ajayplanet5@gmail.com`

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance92

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 83.3% 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

Unknown

Total

1

Last Release

45d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4f4852f96dfef167ce39b64daa597571e56b9fdd91c34f75cd8d98faa25eaf7d?d=identicon)[ajaysingh2121](/maintainers/ajaysingh2121)

---

Top Contributors

[![ajsymfony](https://avatars.githubusercontent.com/u/37686115?v=4)](https://github.com/ajsymfony "ajsymfony (10 commits)")[![ajayplanet](https://avatars.githubusercontent.com/u/17045104?v=4)](https://github.com/ajayplanet "ajayplanet (2 commits)")

---

Tags

mediaphpsyliussylius-mediasylius-pluginsymfonysyliusimagesmediacatalogsylius-plugin

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ajay-sylius-media-hub-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/ajay-sylius-media-hub-plugin/health.svg)](https://phpackages.com/packages/ajay-sylius-media-hub-plugin)
```

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.9M400](/packages/easycorp-easyadmin-bundle)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k64](/packages/open-dxp-opendxp)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M215](/packages/sulu-sulu)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.2k18.1k](/packages/prestashop-prestashop)[contao/core-bundle

Contao Open Source CMS

1231.6M2.8k](/packages/contao-core-bundle)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1616.4k14](/packages/2lenet-crudit-bundle)

PHPackages © 2026

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