Как добавить поле автозаполнения в форму Symfony2 для коллекции и использовать Propel?

Я использую формы Symfony 2.1 с PropelBundle, и я пытаюсь реорганизовать форму, в которой есть выпадающий список объектов (для выбора), чтобы вместо этого использовать поле автозаполнения jquery (работа с AJAX). Для раскрывающегося списка я использовал следующий код (который отлично работал для раскрывающегося списка) в моем типе формы:

$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,
));

Ради небольшого контекста, скажем, мы создаем новый "Reader". объект и что мы хотели бы выбрать любимые книги Reader из списка доступных & quot; Book & quot; объекты. Тип коллекции используется для того, чтобы многие «любимые книги» может быть выбран в новом «Reader» форма. Теперь я хотел бы изменить выше, чтобы использовать автозаполнение. Для этого я попытался реализоватьData Transformer для возможности получить объект Book из простого текстового поля который может быть использован для функции автозаполнения для передачи идентификатора книги, как указано вответ на этот вопрос, Однако я не смог понять, как заставить Data Transformer работать с типом коллекции и классами Propel. Я создал класс BookToIdTransformer, как указано в Кулинарной книге Symfony, и попробовал следующее в & quot; ReaderType & quot; файл:

$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)
);

С учетом вышесказанного я получаю & quot; вызов неопределенного метода: getId & quot; исключение (по-видимому, Transformer ожидает коллекцию книг PropelCollection, а не один объект Book ..). Кто-нибудь знает, как это сделать? или дайте мне знать, если есть другие способы реализовать автозаполнение в Symfony, используя Propel и позволяющие выбирать несколько объектов (например, коллекцию книг)?

Ответы на вопрос(1)

Ваш ответ на вопрос