2012-05-14 30 views
7

Trong Symfony 1 có dạng phụ tùng biểu mẫu có tên admin_double_list. Nó tạo ra hai trường chọn có tên Unassociated và Associated. Nó cũng tạo ra các nút để thêm các mục từ danh sách này sang danh sách khác.Tiện ích biểu mẫu Symfony2 cho các mối quan hệ nhiều-nhiều-

Có cách nào dễ dàng để thực hiện việc này trong Symfony2 không? Hoặc có thể một số cách thân thiện với người dùng khác để chỉnh sửa quan hệ nhiều-nhiều?

Trong documentation chỉ có bốn tiện ích cho nhiều mối quan hệ và không có tiện ích nào trong số chúng rất đẹp khi có nhiều khả năng quan hệ chỉnh sửa.

Trả lời

14

Bạn có thể dễ dàng quản lý nhiều mối quan hệ với entity form field. Ví dụ Nếu User như một mối quan hệ nhiều-nhiều với Group, bạn có thể chỉ đơn giản là thêm vào xây dựng:

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

này sẽ tạo ra một danh sách hộp kiểm nơi các đơn vị liên quan được đánh dấu (kiểm tra) trong khi hủy liên kết giữa thì không. Đặt expanded thành false bạn có thể hiển thị nó làm phần tử chọn (nhiều phần tử).

Nếu bạn cần để tùy chỉnh cách mà nhóm được lấy ra bạn cũng có thể vượt qua một tùy chọn query_builder, hoặc QueryBuilder dụ hoặc đóng cửa nơi $erEntityRepository

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

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

Đối phức tạp hơn kịch bản nhìn cũng tại collection form type, nhưng bạn phải đối phó với jQuery/Javascript.

+0

Vấn đề ở đây là sẽ có quá nhiều hộp kiểm cho trang chỉnh sửa có thể sử dụng và thân thiện với người dùng. Đó là lý do tại sao tôi đang tìm kiếm một cái gì đó tương tự như cách Symfony1. – teemup

+0

Điều đó sẽ làm cho tôi, ngay bây giờ. Tôi đã hy vọng tìm một cách để 'ajax' nó để một người dùng có thể nhấn 'thêm một' và nhận được một lựa chọn duy nhất, cho đến khi họ chọn tất cả các hiệp hội mà họ muốn, tuy nhiên. –

+0

Làm thế nào để thay đổi cách trường MTM được hiển thị, cho exampe - hiển thị id thực thể trong một hàng của hộp kiểm, thay vì cột mặc định? – olga

Các vấn đề liên quan