Estoy usando la lista de opciones de entidades en mi formulario. Quiero usar solo entidades específicas (en ejemplo: solo los grupos a los que pertenece el usuario) Por lo tanto, en el controlador, obtengo estos grupos y trato de pasarlos al formBuider
.Symfony 2: cómo pasar datos a formBuilder?
controlador:
/.../
$groups = $em->getRepository('VendorMyBundle:Group')->getUserGroups($user);
$form = $this->createForm(new Message($groups), $message);
/.../
es así, ¿ahora qué? cómo usarlo en formBuilder? cómo cambiar esta línea para usar el conjunto pasado de grupos?
->add('group','entity',array('class' => 'Vendor\MyBundle\Entity\Group', 'label'=>'Group:'))
o de la otra manera:
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
;
}
/.../
}
así que ¿cómo puedo obtener el objeto $ usuario utilizar en forma constructor? ($ Usuario representan actual usuario registrado)
hice la misma pregunta: - http: // stackoverflow.com/questions/7807388/passing-data-from-controller-to-type-symfony2 ¡la solución de Bacteries es realmente buena! : thumbsup: – xeon
Si necesita ejecutar consultas, hacer llamadas de API, etc. para representar una vista, entonces lo está haciendo mal. Si se trata de una restricción que Symfony coloca en el marco (no hay otra forma de suministrar datos arbitrarios al generador de formularios), avergüéncelos. Este es el trabajo claramente definido del controlador. – eggmatters