2012-05-14 12 views
7

W Symfony 1 widniał formularz widmowy o nazwie lista_administracyjna. Wygenerował dwa wybrane pola o nazwie Niepowiązane i Powiązane. Wygenerowano również przyciski do dodawania elementów z jednej listy do drugiej.Widgety formularzy Symfony2 dla relacji wielu do wielu

Czy jest jakiś łatwy sposób na osiągnięcie tego w Symfony2? A może jakiś inny przyjazny dla użytkownika sposób edytowania relacji między wieloma osobami?

W documentation istnieją tylko cztery widżety dla relacji wiele do wielu i żadna z nich nie jest bardzo ładna, gdy istnieje ogromna liczba możliwości relacji do edycji.

Odpowiedz

14

Możesz łatwo zarządzać relacjami wiele-wiele dzięki entity form field. Na przykład, jeśli User jako wiele do wielu relacji z Group, można po prostu dodać do konstruktora:

$builder->add('groups', 'entity', array(
    'multiple' => true, // Multiple selection allowed 
    'expanded' => true, // Render as checkboxes 
    'property' => 'name', // Assuming that the entity has a "name" property 
    'class' => 'Acme\HelloBundle\Entity\Group', 
); 

To wygeneruje listę checkbox gdzie stowarzyszone są oznaczone (zaznaczone) podczas unassociated nie są. Ustawienie expanded do false można renderować jako element zaznaczenia (wiele).

Jeśli trzeba dostosować sposób, że grupy są pobierane można również przekazać opcję query_builder, albo QueryBuilder instancji lub zamknięcie gdzie $er jest EntityRepository

'query_builder' => function(\Doctrine\ORM\EntityRepository $er) { 
    $qb = $er->createQueryBuilder('g'); 

    return $qb->orderBy('g.name', 'DESC); 
} 

Dla bardziej złożonych wygląd scenariusza również w collection form type, ale musisz radzić sobie z jQuery/Javascript.

+0

Problem polega na tym, że zbyt wiele pól wyboru byłoby użytecznych i przyjaznych dla strony edycji. Właśnie dlatego szukałem czegoś podobnego do sposobu Symfony1. – teemup

+0

To będzie dla mnie, na razie. Miałem nadzieję, że uda mi się znaleźć sposób na "ajax", tak aby użytkownik mógł uderzyć "dodać kolejny" i uzyskać kolejny singiel, dopóki nie wybrali wszystkich pożądanych związków. –

+0

Jak zmienić sposób wyświetlania pola MTM, na przykład - wyświetla identyfikatory podmiotów w wierszu pól wyboru zamiast domyślnej kolumny? – olga

Powiązane problemy