Tôi đang sử dụng danh sách lựa chọn thực thể trong biểu mẫu của tôi. Tôi chỉ muốn sử dụng các thực thể cụ thể (ví dụ: chỉ những nhóm mà người dùng đó thuộc về) Vì vậy, trong bộ điều khiển, tôi nhận được các nhóm này và cố gắng chuyển chúng thành formBuider
.Symfony 2 - cách chuyển dữ liệu sang formBuilder?
Bộ điều khiển:
/.../
$groups = $em->getRepository('VendorMyBundle:Group')->getUserGroups($user);
$form = $this->createForm(new Message($groups), $message);
/.../
như vậy, những gì bây giờ? làm thế nào để sử dụng nó trong formBuilder? làm thế nào để thay đổi dòng này để sử dụng mảng thông qua các nhóm?
->add('group','entity',array('class' => 'Vendor\MyBundle\Entity\Group', 'label'=>'Group:'))
hoặc theo cách khác:
class MessageType
{
/.../
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('group','entity',
array(
'class' => 'Vendor\MyBundle\Entity\Group',
'property' => 'name',
'query_builder' => function ($repository) {
$qb = $repository->createQueryBuilder('group');
$qb->add('where', 'group.administrator = :user');
$qb->setParameter('user', $user->getId());
return $qb;
},
'label' => 'Group'
)
)
// Continue adding fields
;
}
/.../
}
vậy làm thế nào tôi có thể có được đối tượng $ dùng sử dụng theo hình thức xây dựng? ($ User đại diện cho người dùng đăng nhập hiện hành)
tôi đã hỏi cùng một câu hỏi: - http: // stackoverflow.com/questions/7807388/passing-data-from-controller-to-type-symfony2 giải pháp của vi khuẩn thực sự tốt !!! : thumbsup: – xeon
Nếu bạn cần thực hiện truy vấn, thực hiện cuộc gọi api, v.v. để hiển thị chế độ xem, thì bạn đang làm sai. Nếu đây là một ràng buộc mà symfony đặt trên khung công tác (không có cách nào khác để cung cấp dữ liệu tùy ý cho trình tạo biểu mẫu) thì hãy xấu hổ về chúng. Đây là công việc được xác định rõ ràng của bộ điều khiển. – eggmatters