Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Filtrar lista generada por una tabla padre

Estas en el tema de Filtrar lista generada por una tabla padre en el foro de Symfony en Foros del Web. Saludos... Por favor si me pueden ayudar. Tengo dos clases: Categoría y Producto en una relación 1 a N Clase Categoría: Código PHP: class  Categoria  ...
  #1 (permalink)  
Antiguo 16/06/2014, 17:55
 
Fecha de Ingreso: junio-2014
Ubicación: Riobamba
Mensajes: 24
Antigüedad: 10 años, 6 meses
Puntos: 0
Filtrar lista generada por una tabla padre

Saludos...

Por favor si me pueden ayudar. Tengo dos clases: Categoría y Producto en una relación 1 a N


Clase Categoría:

Código PHP:
class Categoria {
    
    
    
/** 
     * @ORM\Id
     * @ORM\Column(type="integer") 
     * @ORM\GeneratedValue  
     */
    
protected $id;
    
    
/** @ORM\Column(type="string", length=32) */
    
protected $nombre;

    
/** @ORM\Column(type="string", length=10) */
    
protected $estado;

 
//** metodo setters y getters*/

   
public function __toString{
      return 
$this->getNombre()
   } 
y la clase Producto

Código PHP:


class Producto {
    
    
    
/** 
     * @ORM\Id
     * @ORM\Column(type="integer") 
     * @ORM\GeneratedValue  
     */
    
protected $id;
    
    
/** @ORM\Column(type="string", length=32) */
    
protected $nombre;

/**
     * @ORM\ManyToOne(targetEntity="Categoria") 
     * @ORM\JoinColumn(name="categoria_id", referencedColumnName="id")
     */
    
protected $categoria;


    
/**  setters y getters*/ 
Ahora para agregar un nuevo producto, en l formulario me aparecen todas las categorías existentes, pero quisiera hacer un filtro, de tal manera que me salgan solo las categoría que tengan el estado=´Activo´

Entonces no se como personalizar el método "toString" que esta dentro de la clase Categoría, porque ese método hace que aparezcan los nombres de las categorías al momento de agregar un producto.

Gracias por su ayuda... :)
  #2 (permalink)  
Antiguo 17/06/2014, 08:47
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Filtrar lista generada por una tabla padre

En el formulario necesitas usar la propiedad query_builder, en el manual viene un ejemplo de su uso: http://symfony.com/doc/current/refer...es/entity.html en la sección que dice Using a Custom Query for the Entities. Si tiene alguna duda publica tu Form Type
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 17/06/2014, 10:11
 
Fecha de Ingreso: junio-2014
Ubicación: Riobamba
Mensajes: 24
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Filtrar lista generada por una tabla padre

A continuación el la clase: ArticuloType:

Código PHP:

class ArticuloType extends AbstractType
{
        
/**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        
$builder
            
->add('nombre')
            ->
add('categoria',array(
                
'class'=> 'yonytestBundle:Categoria',
                
'query_builder'=> function(EntityRepository $er){
                return 
$er->createQueryBuilder('c')
                        ->
where('c.estado','Activo');
    }
    ));
        
    }
    
    
/**
     * @param OptionsResolverInterface $resolver
     */
    
public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        
$resolver->setDefaults(array(
            
'data_class' => 'yony\testBundle\Entity\Articulo'
        
));
    }

    
/**
     * @return string
     */
    
public function getName()
    {
        return 
'yony_testbundle_articulo';
    }

al ejecutar el formulario me sale el siguiente error:

Expected argument of type "string or Symfony\Component\Form\FormTypeInterface", "array" given

Última edición por yonynet; 17/06/2014 a las 10:23
  #4 (permalink)  
Antiguo 17/06/2014, 10:30
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Filtrar lista generada por una tabla padre

Tienes que especificar que es de tipo entity en el segundo argumento
Código PHP:
Ver original
  1. ->add('categoria','entity',array(
  2.                 'class'=> 'yonytestBundle:Categoria',
  3.                 'query_builder'=> function(EntityRepository $er){
  4.                 return $er->createQueryBuilder('c')
  5.                         ->where('c.estado','Activo');
  6.             }
  7. ));
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: filtrar, lista, padre, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:39.