PHPackages                             asdoria/sylius-product-document-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. [PDF &amp; Document Generation](/categories/documents)
4. /
5. asdoria/sylius-product-document-plugin

ActiveSylius-plugin[PDF &amp; Document Generation](/categories/documents)

asdoria/sylius-product-document-plugin
======================================

Asdoria Product Document

0.1.3(3y ago)94.6k8[1 PRs](https://github.com/asdoria/AsdoriaSyliusProductDocumentPlugin/pulls)MITPHPPHP ^7.4 | ^8.0

Since Jun 8Pushed 3y agoCompare

[ Source](https://github.com/asdoria/AsdoriaSyliusProductDocumentPlugin)[ Packagist](https://packagist.org/packages/asdoria/sylius-product-document-plugin)[ RSS](/packages/asdoria-sylius-product-document-plugin/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (3)Dependencies (2)Versions (5)Used By (0)

[![Example of a product's documents customization](doc/asdoria.jpg)](doc/asdoria.jpg)

Asdoria Product Document Plugin
===============================

[](#asdoria-product-document-plugin)

A plugin to create, group and associate documents with products

Features
--------

[](#features)

- Create type of documents
- Easily customize which documents to display from the product configuration page
- Document are automatically displayed on the product's store page and downloaded there

[![Example of a product's documents customization](doc/front.png)](doc/front.png)

Creating a document type and customizing its content in the product edit page. [![Example of a product's documents customization](doc/document.gif)](doc/document.gif)

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

[](#installation)

1. run `composer require asdoria/sylius-product-document-plugin`
2. Add the bundle in `config/bundles.php`. You must put it ABOVE `SyliusGridBundle`

```
Asdoria\SyliusProductDocumentPlugin\AsdoriaSyliusProductDocumentPlugin::class => ['all' => true],
[...]
Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true],
```

3. Import routes in `config/routes.yaml`

```
asdoria_product_document:
    resource: "@AsdoriaSyliusProductDocumentPlugin/Resources/config/routing.yaml"
```

4. Import config in `config/packages/_sylius.yaml`

```
imports:
    - { resource: "@AsdoriaSyliusProductDocumentPlugin/Resources/config/app/config.yaml"}
```

5. In `src/Entity/Product/Product.php`. Import the following classes, traits and methods.

```
use Asdoria\SyliusProductDocumentPlugin\Model\Aware\ProductDocumentsAwareInterface;
use Asdoria\SyliusProductDocumentPlugin\Model\ProductDocumentInterface;
use Asdoria\SyliusProductDocumentPlugin\Traits\ProductDocumentsTrait;
use Sylius\Component\Product\Model\ProductTranslationInterface;

class Product extends BaseProduct implements  ProductDocumentsAwareInterface
{
    use ProductDocumentsTrait;

    public function __construct()
    {
        parent::__construct();
        $this->initializeProductDocumentsCollection();
    }

    /**
     * @param ProductDocumentInterface $productDocument
     */
    public function addProductDocument(ProductDocumentInterface $productDocument): void
    {
        if (!$this->hasProductDocument($productDocument)) {
            $productDocument->setProduct($this);
            $this->productDocuments->add($productDocument);
        }
    }

    /**
     * @param ProductDocumentInterface $productDocument
     */
    public function removeProductDocument(ProductDocumentInterface $productDocument): void
    {
        if ($this->hasProductDocument($productDocument)) {
            $productDocument->setProduct(null);
            $this->productDocuments->removeElement($productDocument);
        }
    }
}
```

6. run `php bin/console do:mi:mi` to update the database schema`
7. Gaufrette is no longer used by Sylius in favour of Flysystem. If you want to use Gaufrette in your project, you need to set:

    ```
    asdoria_sylius_product_document:
        filesystem:
            adapter: gaufrette
    ```

    in your `config/packages/_sylius.yaml` file.

Demo
----

[](#demo)

You can see the result for the user here with a cap: [here](https://demo-sylius.asdoria.fr/en_US/products/knitted-wool-blend-green-cap).
If you want to try to create documents, go on [the admin authentication page](https://demo-sylius.asdoria.fr/admin/) and connect with:

> **Login:** asdoria
> **Password:** asdoria

Then go on ["Document Type" in the back office](https://demo-sylius.asdoria.fr/admin/document-types/) and follow usage lines below.

Note that we have developed several other open source plugins for Sylius, whose demos and documentation are listed on the [following page](https://asdoria.github.io/).

Usage
-----

[](#usage)

1. In the back office, under `Catalog`, enter `Document Types`. Create a type of document using a unique code.
2. Go to a product's edit page, then click the `Documents` tab in the sidebar. Here you can add documents type then upload which document you wish to display for each.

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 66.7% 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 ~93 days

Total

4

Last Release

1200d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a3c3d21a7e6143706fae64e77ded0b43dd880f3caa348009c1b9177ed51dc4d6?d=identicon)[Asdoria](/maintainers/Asdoria)

![](https://www.gravatar.com/avatar/aeca9135fef7a04d30fb78cb641e4f3eb27cd61e9bf839b153bf17565372af75?d=identicon)[pvasdoria](/maintainers/pvasdoria)

---

Top Contributors

[![ygasdoria](https://avatars.githubusercontent.com/u/98453712?v=4)](https://github.com/ygasdoria "ygasdoria (20 commits)")[![bdasdoria](https://avatars.githubusercontent.com/u/106087927?v=4)](https://github.com/bdasdoria "bdasdoria (5 commits)")[![pvasdoria](https://avatars.githubusercontent.com/u/36963822?v=4)](https://github.com/pvasdoria "pvasdoria (3 commits)")[![hdasdoria](https://avatars.githubusercontent.com/u/42731924?v=4)](https://github.com/hdasdoria "hdasdoria (2 commits)")

---

Tags

documentecommercephpproduct-filesyliussylius-pluginsyliusdocumentproductsylius-pluginasdoria

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/asdoria-sylius-product-document-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/asdoria-sylius-product-document-plugin/health.svg)](https://phpackages.com/packages/asdoria-sylius-product-document-plugin)
```

###  Alternatives

[sylius/invoicing-plugin

Invoicing plugin for Sylius.

891.0M2](/packages/sylius-invoicing-plugin)[sylius/refund-plugin

Plugin provides basic refunds functionality for Sylius application.

691.7M17](/packages/sylius-refund-plugin)[webgriffe/sylius-akeneo-plugin

Plugin allowing to import products data from Akeneo PIM to your Sylius store.

2480.4k](/packages/webgriffe-sylius-akeneo-plugin)[monsieurbiz/sylius-media-manager-plugin

Add a media manager to your Sylius.

1789.0k5](/packages/monsieurbiz-sylius-media-manager-plugin)[webgriffe/sylius-table-rate-shipping-plugin

Provides table rate shipping calculator.

1492.4k](/packages/webgriffe-sylius-table-rate-shipping-plugin)[monsieurbiz/sylius-menu-plugin

This plugins allows you to manage menus.

1576.6k1](/packages/monsieurbiz-sylius-menu-plugin)

PHPackages © 2026

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