Я использую список выбора сущности в своей форме. Я хочу использовать только определенные объекты (например, только группы, к которым принадлежит пользователь) Итак, в контроллере я получаю эти группы и пытаюсь передать их в formBuider
.Symfony 2 - как передать данные formBuilder?
Контроллер:
/.../
$groups = $em->getRepository('VendorMyBundle:Group')->getUserGroups($user);
$form = $this->createForm(new Message($groups), $message);
/.../
так, что теперь? как использовать его в formBuilder? Как изменить эту строку для использования переданного массива групп?
->add('group','entity',array('class' => 'Vendor\MyBundle\Entity\Group', 'label'=>'Group:'))
или другим способом:
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
;
}
/.../
}
так, как я могу получить объект $ пользователю использовать в виде строителя? ($ Пользователей представляют текущий пользователь вошедший)
Я задал тот же вопрос: - http: // stackoverflow.com/questions/7807388/pass-data-from-controller-to-type-symfony2 решение Bacteries действительно хорошо !!! : thumbsup: – xeon
Если вам нужно выполнить запросы, сделайте вызовы api и т. Д., Чтобы сделать вид, тогда вы делаете это неправильно. Если это ограничение, которое Symfony помещает в фреймворк (нет другого способа предоставить произвольные данные в построитель форм), тогда стыдитесь за них. Это четко определенная задача контроллера. – eggmatters