Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Media Bundle Laravel Package

dahovitech/media-bundle

View on GitHub
Deep Wiki
Context7

Installation du DahoviTech Media Bundle

Ce guide vous accompagne dans l'installation et la configuration initiale du bundle.

Prérequis

Avant de commencer, assurez-vous que votre environnement répond aux exigences suivantes :

Versions requises

  • PHP : 8.2 ou supérieur
  • Symfony : 7.0 ou supérieur
  • Composer : 2.0 ou supérieur

Extensions PHP requises

# Extensions obligatoires
php -m | grep -E "(gd|fileinfo|zip|json|mbstring)"

# Extensions recommandées
php -m | grep -E "(imagick|intl|opcache)"

Vérification de l'environnement

# Vérifier la version de PHP
php -v

# Vérifier la version de Symfony
php bin/console --version

# Vérifier les extensions
php -m

Installation via Composer

1. Installation du bundle

composer require dahovitech/media-bundle

Si vous utilisez Symfony Flex, les bundles de dépendances seront automatiquement configurés. Sinon, passez à l'étape 2.

2. Activation manuelle des bundles (sans Flex)

Si vous n'utilisez pas Symfony Flex, ajoutez les bundles manuellement dans config/bundles.php :

<?php
// config/bundles.php

return [
    // ... autres bundles
    
    // Dépendances requises
    Vich\UploaderBundle\VichUploaderBundle::class => ['all' => true],
    Oneup\FlysystemBundle\OneupFlysystemBundle::class => ['all' => true],
    Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],
    ApiPlatform\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true],
    
    // Le bundle principal
    DahoviTech\MediaBundle\DahoviTechMediaBundle::class => ['all' => true],
];

3. Installation des dépendances frontend (optionnel)

Pour l'interface d'administration complète :

# Symfony UX (recommandé)
composer require symfony/ux-turbo symfony/stimulus-bundle

# Ou si vous préférez gérer le frontend manuellement
npm install filepond filepond-plugin-image-preview filepond-plugin-file-validate-type

Configuration des dépendances

VichUploaderBundle

Créez le fichier config/packages/vich_uploader.yaml :

# config/packages/vich_uploader.yaml
vich_uploader:
    db_driver: orm
    mappings:
        media_files:
            uri_prefix: /uploads/media
            upload_destination: '%kernel.project_dir%/public/uploads/media'
            namer: Vich\UploaderBundle\Naming\UniqidNamer
            inject_on_load: false
            delete_on_update: true
            delete_on_remove: true

LiipImagineBundle

Créez le fichier config/packages/liip_imagine.yaml :

# config/packages/liip_imagine.yaml
liip_imagine:
    resolvers:
        default:
            web_path: ~

    filter_sets:
        cache: ~
        
        # Format thumbnail carré
        thumbnail:
            quality: 85
            filters:
                thumbnail: { size: [150, 150], mode: outbound }
        
        # Format medium
        medium:
            quality: 85
            filters:
                thumbnail: { size: [400, 400], mode: inset }
        
        # Format large
        large:
            quality: 90
            filters:
                thumbnail: { size: [800, 800], mode: inset }

    loaders:
        default:
            filesystem:
                data_root:
                    - '%kernel.project_dir%/public'

OneupFlysystemBundle

Créez le fichier config/packages/oneup_flysystem.yaml :

# config/packages/oneup_flysystem.yaml
oneup_flysystem:
    adapters:
        local_adapter:
            local:
                location: '%kernel.project_dir%/public/uploads'

    filesystems:
        media_filesystem:
            adapter: local_adapter
            mount: media_filesystem

API Platform (optionnel)

Si vous voulez personnaliser API Platform, créez config/packages/api_platform.yaml :

# config/packages/api_platform.yaml
api_platform:
    title: 'DahoviTech Media API'
    version: '1.0.0'
    description: 'API de gestion des médias'
    
    formats:
        jsonld: ['application/ld+json']
        json: ['application/json']
        html: ['text/html']
    
    docs_formats:
        jsonld: ['application/ld+json']
        json: ['application/json']
        html: ['text/html']

Configuration du bundle

Configuration de base

Créez le fichier config/packages/dahovi_tech_media.yaml :

# config/packages/dahovi_tech_media.yaml
dahovi_tech_media:
    # Chemin de stockage local
    upload_path: '%kernel.project_dir%/public/uploads/media'
    
    # Taille maximale (10MB)
    max_file_size: 10485760
    
    # Extensions autorisées
    allowed_extensions: 
        - 'jpg'
        - 'jpeg'
        - 'png' 
        - 'gif'
        - 'webp'
        - 'pdf'
        - 'doc'
        - 'docx'
        - 'txt'
    
    # Formats d'images
    image_formats:
        thumbnail:
            width: 150
            height: 150
            mode: crop
        medium:
            width: 400
            height: 400
            mode: resize
        large:
            width: 800
            height: 800
            mode: resize
    
    # Configuration de stockage
    storage:
        adapter: local
    
    # Sécurité
    security:
        generate_secure_filename: true
        scan_for_viruses: false
        mime_types:
            - 'image/jpeg'
            - 'image/png'
            - 'image/gif'
            - 'image/webp'
            - 'application/pdf'
            - 'text/plain'
            - 'application/msword'
            - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    
    # CDN (optionnel)
    cdn:
        enabled: false
        url: ''
    
    # API
    api:
        enabled: true
        prefix: '/api/media'

Routes

Ajoutez les routes dans config/routes.yaml :

# config/routes.yaml

# API Platform (automatique)
api:
    resource: .
    type: api_platform

# Routes d'administration
dahovi_tech_media_admin:
    resource: '[@DahoviTechMediaBundle](https://github.com/DahoviTechMediaBundle)/Controller/AdminController.php'
    type: attribute
    prefix: /admin

# Routes API du bundle
dahovi_tech_media_api:
    resource: '[@DahoviTechMediaBundle](https://github.com/DahoviTechMediaBundle)/Controller/MediaController.php'
    type: attribute
    prefix: /api

Base de données

1. Créer la migration

php bin/console make:migration

2. Appliquer la migration

php bin/console doctrine:migrations:migrate

Ou mise à jour directe (développement)

php bin/console doctrine:schema:update --force

Permissions de fichiers

Créer les répertoires et définir les permissions

# Créer les répertoires
mkdir -p public/uploads/media
mkdir -p var/cache/liip_imagine

# Définir les permissions (Linux/macOS)
chmod 755 public/uploads
chmod 755 public/uploads/media
chmod 755 var/cache

# Pour les environnements de production
chown -R www-data:www-data public/uploads
chown -R www-data:www-data var/cache

Fichier .gitignore

Ajoutez à votre .gitignore :

# Uploads
/public/uploads/media/*
!/public/uploads/media/.gitkeep

# Cache d'images
/var/cache/liip_imagine/*

Installation des assets

Assets du bundle

php bin/console assets:install

Webpack Encore (optionnel)

Si vous utilisez Webpack Encore, ajoutez les assets frontend :

# Installation des dépendances
npm install filepond filepond-plugin-image-preview filepond-plugin-file-validate-type

# Dans webpack.config.js
Encore
    .addEntry('media-bundle', './assets/media-bundle.js')
    .copyFiles({
        from: './node_modules/filepond/dist/',
        to: 'filepond/[path][name].[ext]'
    });

Vérification de l'installation

1. Vérification des routes

php bin/console debug:router | grep media

Vous devriez voir les routes :

  • /admin/media - Interface d'administration
  • /api/media - API REST

2. Test de l'interface

Visitez http://your-domain/admin/media pour accéder à l'interface d'administration.

3. Test de l'API

curl -X GET http://your-domain/api/media

4. Vérification des commandes

php bin/console list dahovi-tech

Vous devriez voir les commandes :

  • dahovi-tech:media:cleanup-expired
  • dahovi-tech:media:generate-thumbnails
  • dahovi-tech:media:statistics

Dépannage de l'installation

Problèmes courants

Extensions PHP manquantes

# Ubuntu/Debian
sudo apt-get install php-gd php-zip php-imagick

# CentOS/RHEL
sudo yum install php-gd php-zip php-imagick

Problèmes de permissions

# Vérifier les permissions
ls -la public/uploads/
ls -la var/cache/

# Corriger les permissions
sudo chown -R www-data:www-data public/uploads var/cache
sudo chmod -R 755 public/uploads var/cache

Erreurs de cache Liip Imagine

# Vider le cache
php bin/console cache:clear
php bin/console liip:imagine:cache:remove

# Régénérer le cache
php bin/console liip:imagine:cache:resolve thumbnail public/uploads/media/sample.jpg

Logs de débogage

Ajoutez dans config/packages/monolog.yaml :

monolog:
    channels: ['dahovi_tech_media']
    
    handlers:
        main:
            channels: ['!dahovi_tech_media']
        
        media_bundle:
            type: stream
            path: '%kernel.logs_dir%/media_bundle.log'
            level: debug
            channels: ['dahovi_tech_media']

Configuration pour les environnements

Développement

# config/packages/dev/dahovi_tech_media.yaml
dahovi_tech_media:
    security:
        scan_for_viruses: false
    api:
        cors:
            allowed_origins: ['*']

Production

# config/packages/prod/dahovi_tech_media.yaml
dahovi_tech_media:
    security:
        scan_for_viruses: true
    cdn:
        enabled: true
        url: 'https://cdn.yourdomain.com'
    api:
        cors:
            allowed_origins: ['https://yourdomain.com']

Prochaines étapes

Une fois l'installation terminée :

  1. Configuration avancée
  2. Guide de démarrage rapide
  3. Exemples d'utilisation

Support

En cas de problème lors de l'installation :

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
directorytree/privacy-filter-classifier
directorytree/privacy-filter
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata
splash/openapi
splash/scopes
splash/toolkit
testo/output-teamcity
testo/bridge-symfony
spatie/flare-daemon-runtime