MediaBundle - for Symfony 2, (*1)
Provides
This bundle provides a service and base entity class.
Events are dispached after each media manager service action., (*2)
Setup
- Create your media bundle for example AcmeMediaBudle - [optional step - only creation of entity is required]
- Create Media entity which extends Coshi\MediaBundle\Entity\Media, add id column and mapping of your choice [ if bundle had been created create entity in that bundle ]
- Add CoshiMediaBundle configuration to your appliaction's config.yml see config reference. Note that you have to create media_path in your web_root and give them proper permissions
- Add CoshiMediaBundle to your AppKernel.php
- Update your database schema
- Add desired entities which have attached media and implement interfaces Coshi\MediaBundle\Model\MediaInterface for desired entity
-
Now you can use coshi_media.media_manager service to perform file upload as simple as, (*3)
$this->get('coshi_media.media_manager')->create($uploadedFileObject);
$this->getDoctrine()->getManager()->flush();
Minimal configuration for storing files on local filesystem
coshi_media:
media_class: AppBundle\Entity\Media
#Adapters definiton
adapters:
local:
directory: media
create: true
filesystems:
local:
adapter: local
filesystem_default: local
Currentluy only Amazon S3 and Local filesystem are supported., (*4)
Configuration reference
coshi_media:
media_class: Webfit\MO\MediaBundle\Entity\Media
#Adapters definiton
adapters:
local:
directory: media_upload_delete_work
create: true
aws_s3:
service_id: aws_s3.client #name of amazon service
bucket_name: test-mediabundle
options:
directory: media_bundle_adapter_upload
#Filesystems/storage definition
filesystems:
local:
adapter: local
amazon:
adapter: aws_s3
#Optional parameter
filesystem_default: amazon
Twig Extension
This bunlde provides simple extension to render a path to media in Twig, (*5)
{{ coshi_media_url(media) }}
Where of course media is a instance of mapped media class, (*6)
Events
Bundle generates couple events they are defined in Coshi\MediaBundle\MediaEvents
Events occurs on create of medium, update and delete.
This is the way to extend bundle functionality., (*7)
MediaEvents::CREATE_MEDIA
MediaEvents::UPDATE_MEDIA
MediaEvents::DELETE_MEDIA