Skip to content

Instantly share code, notes, and snippets.

@Bujhm
Forked from kunicmarko20/ImageProvider.php
Created May 18, 2020 20:56
Show Gist options
  • Save Bujhm/2af05926593cd1c9b8a8d6a1990ca607 to your computer and use it in GitHub Desktop.
Save Bujhm/2af05926593cd1c9b8a8d6a1990ca607 to your computer and use it in GitHub Desktop.
Sonata Media SVG Provider

Sonata Media SVG Provider

This example will help you create custom provider for Sonata Media that will allowe you to upload svg.

Adapted solution from here.

sonata_media:
db_driver: doctrine_orm
default_context: default
contexts:
default:
providers:
- admin.provider.image
#...
<?php
namespace YourBundle\Provider;
use Sonata\MediaBundle\Provider\FileProvider;
class ImageProvider extends FileProvider
{
}
services:
admin.provider.image:
class: YourBundle\Provider\ImageProvider
tags:
- { name: sonata.media.provider }
arguments:
- "admin.provider.image"
- "@sonata.media.filesystem.local"
- "@sonata.media.cdn.server"
- "@sonata.media.generator.default"
- "@sonata.media.thumbnail.format"
- ['gif', 'svg', 'jpg', 'jpeg', 'png']
- ['image/svg+xml', 'image/gif', 'image/jpeg', 'image/pjpeg', 'image/png']
calls:
- [ setTemplates, [{ helper_thumbnail : 'YourBundle:Provider:thumbnail.html.twig', helper_view : 'YourBundle:Provider:view_image.html.twig' }]]
<img src="/uploads/media/{{ options.file }}" {% for name, value in options %}{{name}}="{{value}}" {% endfor %} />
<img src="/uploads/media/{{ options.file }}" {% for name, value in options %}{{ name }}="{{ value }}" {% endfor %} />
<?php
namespace YourBundle\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
class YourAdmin extends AbstractAdmin
{
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('icon', 'sonata_type_model_list', ['required' => false], [
'link_parameters' => ['context' => 'default', 'provider' => 'admin.provider.image']]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment