Symfony 2 ¿Cómo incrusto un formulario de colección usando algunos criterios?
Frecuentes
Visto 3,237 veces
3
Tengo un problema al usar los formularios de recopilación incrustados porque quiero filtrar los datos que se muestran en la recopilación proporcionada. es decir
<?php
Class Parent
{
... some attributes ...
/**
* @ORM\OneToMany(targetEntity="Child", mappedBy="parent", cascade={"all"})
*/
private $children;
... some setters & getters ...
}
Class Child
{
private $attribute1;
private $attribute2;
/**
* @ORM\ManyToOne(targetEntity="Parent", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
... some setters & getters ...
}
Luego construyo el formulario usando:
class ParentChildType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('children', 'collection', array(
'type' => ChildrenType(),
'allow_add' => true,
));
}
}
...
On controller:
$parent = $this->getDoctrine()->getEntityManager()->getRepository('AcmeBundle:Parent')->find( $id );
$forms = $this->createForm( new ParentChildType(), $parent)->createView();
and then..
return array('forms' => $forms->crateView());
Mi problema es cuando quiero filtrar la colección por $attribute1
y/o $attribute2
of Child
clase modelo.
¿Hay alguna forma de filtrar por un criterio para estos formularios de recopilación?
2 Respuestas
4
Parece que tengo que filtrar el objeto antes de usar CreateQuery y luego crear el formulario usando este objeto filtrado. Como esto:
$parent = $this->getDoctrine()->getEntityManager()->createQuery("
SELECT p, c
FROM AcmeBundle:Parent p
JOIN p.children c
WHERE c.attribute1 = :attr1
AND c.attribute2 = :attr2
")
->setParameter('attr1', <some_value>)
->setParameter('attr2', <some_value>)
->getOneOrNullResult();
$forms = $this->createForm( new ParentChildType(), $parent)->createView();
....
return array('forms' => $form->createView());
contestado el 04 de mayo de 12 a las 03:05
0
Te señalo la dirección correcta (espero):
http://www.craftitonline.com/2011/08/symfony2-ajax-form-republish/
Este artículo trata sobre las dependencias de campo. por ejemplo, cuando seleccionas un país, tienes las localidades que pertenecen al país que aparece en la lista.
Parece que se parece a su problema
contestado el 03 de mayo de 12 a las 12:05
¡Exactamente! Ese ejemplo puede ser útil para resolver mi problema, sin embargo, quiero usarlo en un formulario de tipo "colección". - alvaroveliz
Gracias, ese ejemplo será muy útil. alvaroveliz
Cuando traté de acceder aulatic.16mb.com/wordpress/2011/08/…, hubo un error 403 Prohibido. Realmente estoy ansioso por ver el ejemplo porque tengo la misma funcionalidad. - Floricel
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas forms collections symfony embed or haz tu propia pregunta.
Normalmente, usaría una consulta al cargar $parent y cargar solo los elementos secundarios que desee. $padre = $repo->load($id,$params); Más un problema de modelo que un problema de forma. - Cerad
Pero en el modelo no tengo el problema, el problema es cuando lo quiero usar como Formulario Tipo Cobro. - alvaroveliz