Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/07/2015, 02:41
Karmo
 
Fecha de Ingreso: marzo-2005
Mensajes: 51
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Formularios y type entity (DUDA)

Buenas de nuevo! esta semana estoy cañón con el tema, y es que aunque algo sé de symfony siempre me voy encontrando temas que no sé cómo resolver. Y la verdad es que por aquí ayudáis mucho y es de agradecer.

Me encuentro con un nuevo muro delante mío, os explico.

Tengo una entity llamada "Referencias" en la que, entre otros, tengo los siguientes campos:
  • Referencia
  • Descripción
  • Código EAN

Por otro lado tengo una entidad de Pedidos y Pedidos_Referencias en la que la segunda se comporta como un "collection" en los forms. En la segunda (Pedidos_Referencias) tengo una clave foránea (Reference) que apunta a la entidad "Referencias".

Para terminar, tengo el formulario correspondiente en el que registro las referencias que se piden en un pedido, con el típico campo entity:

Código PHP:
$builder->add('reference',"entity",
            array(
'label'=>'Descripción:','class' => 'AlmacenBundle:Reference',
                
'required'=>false
                
'query_builder' => function(EntityRepository $er) {
                    return 
$er->createQueryBuilder('u')
                        ->
orderBy('u.description''ASC');
                },
)); 
El tema es que me piden que en éste formulario se pueda seleccionar también la referencia no solo por la descripción, sino por el código de referencia y por el código EAN. (los otros campos que aparecen en la entidad Referencia que indico más arriba).

Cuando agrego esos campos al formulario queda como lo siguiente:

Código PHP:
        $builder->add('referenceCode',"entity",
            array(
'label'=>'Código(AU):',
                
'class' => 'AlmacenBundle:reference',
                
'property' => 'name',
                
'required'=>false));


        
$builder->add('referencePN',"entity",
            array(
'label'=>'PN:','class' => 'AlmacenBundle:Reference'
                
'property' => 'ean',
                
'required'=>false,
                
'query_builder' => function(EntityRepository $er) {
                    return 
$er->createQueryBuilder('u')
                        ->
andwhere('u.ean <> :ean')
                        ->
orderBy('u.ean''ASC')
                        ->
setParameter('ean''');
                },
            ));

        
$builder->add('reference',"entity",
            array(
'label'=>'Descripción:','class' => 'AlmacenBundle:Reference',
                
'required'=>false
                
'query_builder' => function(EntityRepository $er) {
                    return 
$er->createQueryBuilder('u')
                        ->
orderBy('u.description''ASC');
                },
            )); 
Hasta aquí ningún problema, el formulario me pinta lo que ha de pintar. El problema viene en la parte del controlador. Cuando envío el formulario, evidentemente me indica que los otros campos no existen en la entidad "Pedidos_Referencias", y no existen los métidos Get.

El caso es que yo no quiero registrar esos datos en la BD al enviar el formulario, sino primero comprobar qué ha selccionado el usuario (Si la referencia por Código, descripción, o Código de barrras), luego buscar el ID de esa referencia y entonces sí registrarlo en la "Pedidos_referencia".

Alguna sugerencia para saltarme los errores de "No existe el método Get en la entidad Pedidos_Referencia"?