phpguild / media-object-bundle
Symfony Media object Bundle
Installs: 217
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 0
Open Issues: 4
Type:symfony-bundle
Requires
- php: >=7.2
- ext-fileinfo: *
- liip/imagine-bundle: ^2.6
- mashape/unirest-php: ^3.0
- phpguild/doctrine-extra-bundle: ^1.0
- symfony/form: *
- symfony/mime: *
- symfony/property-access: *
- symfony/serializer: *
- dev-main
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- V1.0.6
- V1.0.5
- V1.0.4
- V1.0.3
- V1.0.2
- V1.0.1
- v1.0.0
- dev-dependabot/composer/symfony/http-kernel-5.4.20
- dev-dependabot/composer/twig/twig-3.4.3
- dev-dependabot/composer/symfony/framework-bundle-5.4.4
- dev-dependabot/composer/symfony/serializer-5.3.12
This package is auto-updated.
Last update: 2024-04-30 00:34:04 UTC
README
Features
- Api Platform support
- Base64 file normalization
- URL file normalization
Installation
Install with composer
composer req phpguild/media-object-bundle
Configuration
Create file config/packages/phpguild_media_object.yaml
phpguild_media_object:
default_filter: 'original'
media_prefix: 'media'
original_prefix: 'media/original'
cache_prefix: 'media/cache'
resolve_prefix: 'media/cache/resolve'
resolve_filter_prefix: 'media/cache/resolve/{filter}'
web_root: '%kernel.project_dir%/public'
data_root: '%kernel.project_dir%/public/media/original'
Command support
https://symfony.com/doc/current/routing.html#router-generate-urls-commands
Edit file .env
###> symfony/request ###
REQUEST_CONTEXT_SCHEME=https
REQUEST_CONTEXT_HOST=localhosturl
REQUEST_CONTEXT_PORT=
REQUEST_CONTEXT_PATH=
###< symfony/request ###
Edit file config/packages/routing.yaml
parameters:
router.request_context.scheme: '%env(REQUEST_CONTEXT_SCHEME)%'
router.request_context.host: '%env(REQUEST_CONTEXT_HOST)%'
router.request_context.port: '%env(REQUEST_CONTEXT_PORT)%'
router.request_context.base_url: '%env(REQUEST_CONTEXT_PATH)%'
asset.request_context.base_path: '%router.request_context.base_url%'
asset.request_context.secure: true
Edit file config/packages/liip_imagine.yaml
liip_imagine:
driver: gd
default_image: '/media/default.jpg'
loaders:
default:
filesystem:
data_root: '%kernel.project_dir%/public/media/original'
resolvers:
default:
web_path:
web_root: '%kernel.project_dir%/public'
cache_prefix: 'media/cache'
filter_sets:
_post_upload:
quality: 95
filters:
auto_rotate: ~
thumbnail: { size: [2048], mode: outbound }
Usage
Custom usage
use Doctrine\ORM\Mapping as ORM;
use PhpGuild\MediaObjectBundle\Model\MediaObjectInterface;
use PhpGuild\MediaObjectBundle\Annotation as MediaObject;
class Photo implements MediaObjectInterface
{
/**
* @ORM\Column(type="string")
* @MediaObject\Uploadable(urlProperty="fileUrl")
*/
protected $file;
protected $fileUrl;
With predefined trait
use PhpGuild\MediaObjectBundle\Model\File\FileInterface;
use PhpGuild\MediaObjectBundle\Model\File\FileTrait;
class Photo implements FileInterface
{
use FileTrait;
API Platform Bridge
Edit file config/services.yaml
imports:
- { resource: '@PhpGuildMediaObjectBundle/Resources/config/bridge/api-platform.yaml' }
Edit file config/routes.yaml
api_phpguild_media_object_upload_image:
path: /api/upload/image
controller: PhpGuild\MediaObjectBundle\Bridge\ApiPlatform\Action\UploadImageAction
methods: POST
defaults:
_api_item_operation_name: post_upload_image