SF2: Jugando con FPNTagBundle

Esta historia empezó con un pequeño problema de fácil solución que se fue "modelizando" en algo un poco más complejo. Si queremos agregar tags a una entidad concreta la solución podría ser un Many-To-Many con otra entidad "Tags" de mapeado inverso hacia la primera.
Sin embargo si lo que queremos es agregar tags a cualquier entidad que utilicemos en un proyecto (noticias, howtos, documentos, imágenes...) se complica un poco más.
En Django existe una aplicación muy sencilla de integrar en tu proyecto que se encarga de guardar las relaciones entre los tags y los objetos que se han taggeado, de forma que no importa el número ni la estructura de nuestros modelos o entidades.
En Symfony me han chivado que con FPNTagBundle, un paquete que, usando DoctrineExtensions-Taggable por detrás, se puede hacer lo mismo. La integración aún siguiendo las instrucciones del repo, no es trivial. Los pasos que he seguido para hacerlo funcionar a la perfección son los siguientes:
- Crear un bundle propio - TagBundle - con las entidades Tag.php y Tagging.php según pone en la documentación.
- Implementar Taggable a la entidad que quieras "taggear".
- Agregar los 3 métodos requeridos de la interfaz (getTags(), getTaggableType(), getTaggableId() y setTags()).
- Crear un DataTransformer que modifique los valores de los tags para convertirlos en objetos Tags en el guardado (y en string para mostrar en el formulario con formato "tag1, tag2, tag3...).
- Editar el controlador para cargar los tags en la edición del registro de la entidad correspondiente y guardarlos en el $form->isValid().
- Extender el Repository oficial de FPNTagBundle con uno propio para personalizar un poco alguna de las queries que trae por defecto.
Como extra, también he integrado un par de plugins jquery de forma que al agregar un nuevo tag autocomplete con los que ya existen en la base de datos y los muestre de forma más o menos gráfica:
- Bassistance Autocomplete (he optado por éste plugin y no el autocomplete builtin jquery porque permite pasar los datos vía POST y con variables complementarias).
- Jquery TagsInput en la parte de administración, intuitivo y bastante sencillo de utilizar.
He creado un GIST que iré actualizando con el código de ejemplo de todo este berenjenal que he montado, por si le interesa a alguien. Y como nota final o moraleja, resaltar que sí se puede hacer funcionar FPNTagBundle con Autocomplete POST y tagsInput, no de forma demasiado sencilla, pero una vez funciona y lo entiendes es más sencillo de copypastear.