Glide Symfony Bundle
Integrate the great Glide library in your Symfony app., (*1)
Installation
$ composer require erichard/glide-bundle
Then you need to add the bundle to your AppKernel., (*2)
$bundles = array(
...
new Erichard\GlideBundle\ErichardGlideBundle(),
...
);
Enable the routing in your app/config/routing.yml, (*3)
_erichard_glide:
resource: "@ErichardGlideBundle/Resources/config/routing.yml"
Configuration
erichard_glide:
sign_key: ~
presets:
product_showcase: # glide options
w: 540
h: 540
accept_webp:
enabled: true # Auto convert to WebP if the browser support it (false by default)
servers:
image:
source: oneup_flysystem.image_filesystem # A flystem service
cache: oneup_flysystem.cache_filesystem # A flystem service
max_image_size: 4000000 # OPTIONAL - number of pixels
defaults: # OPTIONAL - glide defaults options
q: 90
fm: jpg
I recommend to use the oneup/flysystem-bundle package to manage your flysystems services., (*4)
Servers
You can configure as many servers you want. Each server must have its proper source and cache flysystem adapter. For example you can have a aws server with both source and cache in Amazon S3 buckets and a local server serving locally stored images., (*5)
Presets
I prefer to use presets in my projects to avoid having image settings scattered across templates. Check the Glide documentation to learn more about presets., (*6)
Security
For enhanced security you should sign each HTTP request by setting the sign_key option above., (*7)
In addition signing URLs, you can also limit how large images can be generated for each server with the max_image_size setting., (*8)
Take a look at the Glide documentation to learn more about security., (*9)
Twig Extension
A twig extension is provided to generate images URL in your templates. The extension will handle the request signature if you have enabled the feature., (*10)
{{ glideUrl('image', image.path, {'p': 'product_showcase'}) }}
Get glide servers from container
Servers are accessible publicly in the container. You can grab them with their id erichard_glide.<name>_server., (*11)
With the exemple from above you can get the server like this., (*12)
$server = $this->get('erichard_glide.image_server');