Buenas he creado un formulario en el cual tuve que hacer una query especial para que me mostrase solo los articulos pertenecientes a un cliente, y el caso es que despues de buscar mucho(demasiado, me esta costando mucho aprender Symfony2 con la documentacion disponible, yo lo que voy aprendiendo lo subire a un blog o ayudare con las documentaciones lo prometo :)) he logrado hacer lo siguiente para pasarle un parametro:
Código PHP:
$form2 = $this->get('form.factory')->create(new AddPromocionForm(),$promocion,array('attr' => array('id' => '1')));
Y en el AddPromocionForm.php he puesto lo siguiente:
Código PHP:
$builder->add('SidArticuloPromocion','entity',
array('class' => 'AcmeDemoBundle:ProArticulo',
'query_builder' => function ($repository) {
$qb = $repository->createQueryBuilder('AcmeDemoBundle:ProArticulo');
$qb->add('where', 'AcmeDemoBundle:ProArticulo.cliente = :cliente');
$qb->setParameter('cliente',$options['attr']['id']);
return $qb;
},'multiple' => true, 'required' => false,'property' => 'PidArticulo'));
El caso es que el setparameter me falla me dice que options no es un objeto, y creo que es porque esta dentro de una funcion function($repository) con lo que la variable deja de tener valor, pero no se como arreglarlo...
Tambien lo he hecho de esta forma pero me falla igualmente:
Código PHP:
$qb = $em->createQueryBuilder('AcmeDemoBundle:ProArticulo');
$qb->add('where', 'AcmeDemoBundle:ProArticulo.cliente = :cliente');
$qb->setParameter('cliente',$pidEmpresa);
$promocion = new AcmeDemoBundleEntityCliPromociones();
$form2 = $this->get('form.factory')->create(new AddPromocionForm(),$promocion,array('attr' => array('query_builder' => $qb)));
Y en el AddPromocionForm.php lo siguiente y me dice que es un indice incorrecto(hago un print_r y si que tiene valores, y si le paso una query me reconoce query builder que es un tipo incorrecto:
Código PHP:
$builder->add('SidArticuloPromocion','entity',
array('class' => 'AcmeDemoBundle:ProArticulo',
'query_builder' => $options['attr']['id'],'multiple' => true, 'required' => true,'property' => 'PidArticulo'));