Jak dodać pole autouzupełniania w formularzu Symfony2 dla kolekcji i używając Propela?

Używam formularzy Symfony 2.1 z PropelBundle i próbuję zmienić formę, która miała rozwijaną listę obiektów (do wyboru), zamiast tego używać pola autouzupełniania jquery (działającego z AJAX). Dla listy rozwijanej używałem następującego kodu (który działał idealnie dla listy rozwijanej) w moim typie formularza:

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

W trosce o mały kontekst powiedzmy, że tworzymy nowy obiekt „Czytnik” i że chcemy wybrać ulubione książki Czytelnika z listy dostępnych obiektów „Książki”. Typ kolekcji jest używany, aby wiele „ulubionych książek” można było wybrać w nowym formularzu „Czytnik”. Teraz chciałbym zmienić powyższe, aby użyć autouzupełniania. W tym celu próbowałem zaimplementowaćTransformator danych, aby móc pobrać obiekt Book z prostego pola tekstowego które mogłyby zostać użyte do funkcji autouzupełniania, aby przekazać identyfikator książki, jak wskazano wodpowiedź na to pytanie. Nie udało mi się jednak dowiedzieć, jak sprawić, by transformator danych działał z typem kolekcji i klasami Propela. Stworzyłem klasę BookToIdTransformer, jak wskazano w książce Symfony Cookbook, i wypróbowałem następujące elementy w pliku „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)
);

W związku z powyższym otrzymuję wyjątek „Call to undefined method: getId” (najwyraźniej Transformer oczekuje PropelCollection of Books, a nie pojedynczego obiektu Book ..). Czy ktoś wie, jak się do tego zabrać? lub daj mi znać, jeśli istnieją inne sposoby wdrożenia autouzupełniania w Symfony za pomocą Propela i umożliwienia wyboru wielu obiektów (np. kolekcji książek)?

questionAnswers(1)

yourAnswerToTheQuestion