Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/12/2011, 17:20
utopiko
 
Fecha de Ingreso: marzo-2006
Mensajes: 230
Antigüedad: 18 años, 8 meses
Puntos: 2
Problema con setparameter en un campo entity formulario

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