Installation:
composer require armetiz/media-bundle
Enable the bundle in AppKernel.php:
new Armetiz\MediaBundle\ArmetizMediaBundle(),
Basic Configuration (config.yml):
armetiz_media:
contexts:
default:
providers:
armetiz.media.provider.image:
formats:
thumbnail: { width: 200 }
First Use Case:
Upload an image via a form (e.g., using Symfony's File type) and save it to the default storage (web/medias). Use Twig to render it:
{{ media(mediaObject, 'thumbnail') }}
Media Storage:
web/medias) or configure a custom one (e.g., S3 via Gaufrette).armetiz_media:
filesystems:
s3:
id: gaufrette.s3
Contexts and Providers:
image, youtube).image before file).contexts:
default:
providers:
armetiz.media.provider.youtube: ~
armetiz.media.provider.image: ~
Transformations:
image_to_thumbnail) or create custom ones.{{ media(mediaObject, 'thumbnail', { width: 300 }) }}
CDN Integration:
cdns:
local:
base_url: %website_url%/medias
Twig Helpers:
{{ media(mediaObject, 'thumbnail', { template: 'media/thumbnail.html.twig' }) }}
{{ mediaUri(mediaObject, 'thumbnail') }}
File type to handle uploads and save media entities.OneToOne with Armetiz\MediaBundle\Entity\Media).File constraints).Provider Order:
Transformer Configuration:
engine: gd) may conflict with custom options. Merge them explicitly:
formats:
thumbnail:
transformer: armetiz.media.transformer.image_to_thumbnail
transformer_options:
engine: imagick # Overrides default
Context Detection:
Media entity to ensure consistency across contexts.Twig Template Overrides:
media/thumbnail.html.twig) in your bundle's Resources/views.CDN Caching:
%kernel.debug%: true) to inspect provider/media resolution.$mediaManager = $this->get('armetiz.media.manager');
dump($mediaManager->getContexts());
Custom Providers:
Armetiz\MediaBundle\Provider\AbstractProvider to support new media types (e.g., SoundCloud, Instagram).Transformers:
Armetiz\MediaBundle\Transformer\TransformerInterface.Filesystems:
filesystems.Twig Extensions:
ArmetizMediaTwigExtension service.MediaManager.file provider).How can I help you explore Laravel packages today?