Icono junto a thumbnail en listados items SonataMediaBundle

En ocasiones podemos tener varios sonata.media.providers asignados a un mismo contexto (context). Si estos generan thumbnails, en el listado de items en SonataAdminBundle no podemos distinguir que provider es cada uno.

Para solucionarlo podemos mostrar junto al thumbnail un icono que nos indique el provider al que pertenece.

Vamos a conseguirlo, de un modo sencillo.

Creamos una plantilla que después vamos a utilizar desde nuestra Admin Class de SonataAdminBundle.

la plantilla, list_image_icon.html.twig

Tengo que destacar varios puntos:

  1. En las líneas 5 y 7, «nombreCampo» se tiene que sustituir por el campo que tengas definido en tu entidad (Entity).
  2. En la línea 10, he sustituido los valores width y height de la plantilla propia de SonataMediaBundle, por la clase «img-responsive». De este modo evito que los thumbnails se deformen en los listados.
    La línea 10 original es:

Ahora solo nos queda utilizar esta plantilla en nuestra Admin Class.

EntityAdmin.php

Como se puede observar en la línea 37 estamos utilizando nuestra nueva plantilla twig.

Con estos ajustes hemos conseguido distinguir en los listados que tipo de archivo media tenemos asignado en cada uno de los items de nuestra entidad.