Как добавить поле автозаполнения в форму 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 и позволяющие выбирать несколько объектов (например, коллекцию книг)?