¿Cómo agregar un campo de autocompletado en un formulario de Symfony2 para una colección y usar Propel?

Estoy usando los formularios de Symfony 2.1 con PropelBundle y estoy tratando de refactorizar un formulario que tenía una lista desplegable de objetos (para seleccionar) para usar un campo de autocompletar jquery (trabajando con AJAX). Para la lista desplegable estaba usando el siguiente código (que funcionó perfectamente para el menú desplegable) en mi tipo de formulario:

$builder->add('books', 'collection', array(
    'type'          => 'model',
    'options'       => array(
        'class'     => 'MyVendor\MyBundle\Model\Book',
        'property'  => 'title',
    ),
    'allow_add'     => true,
    'allow_delete'  => true,
    'by_reference'  => false,
    'required'      => false,
));

Por el bien de dar un poco de contexto, digamos que estamos creando un nuevo objeto "Reader" y que nos gustaría seleccionar los libros favoritos de los lectores de una lista de objetos "Book" disponibles. Se utiliza un tipo de colección para que muchos "libros favoritos" puedan seleccionarse en el nuevo formulario "Lector". Ahora, me gustaría cambiar lo anterior para usar autocompletar. Para ello, intenté implementar unaTransformador de datos para poder obtener un objeto Libro desde un campo de texto simple que podría usarse para que la función Autocompletar pase la ID del libro como se indica enla respuesta a esta pregunta. Sin embargo, no pude averiguar cómo hacer que el transformador de datos funcione con un tipo de colección y clases Propel. Creé una clase BookToIdTransformer como se indica en el libro de recetas de Symfony y probé lo siguiente en el archivo "ReaderType":

$transformer = new BookToIdTransformer();
$builder->add(
        $builder->create('books', 'collection', array(
            'type'          => 'text',
            'allow_add'     => true,
            'allow_delete'  => true,
            'by_reference'  => false,
            'required'      => false,
        ))->addModelTransformer($transformer)
);

Con lo anterior, obtengo una excepción de "Llamada a un método no definido: getId" (aparentemente, el Transformador espera una colección de libros Propel, no un solo objeto de Libro ...). ¿Alguien sabe cómo hacerlo? ¿o avisarme si hay otras formas de implementar el autocompletado en Symfony usando Propel y permitiendo seleccionar múltiples objetos (por ejemplo, una colección de libros)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta