【发布时间】:2012-05-12 17:49:09
【问题描述】:
我在使用嵌入集合表单时遇到问题,因为我想过滤给定集合中显示的数据。即
<?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 ...
}
然后我使用以下方法构建表单:
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());
我的问题是当我想通过 $attribute1 和/或 Child 模型类的 $attribute2 过滤集合时。
有没有办法按此集合表单的条件进行过滤?
【问题讨论】:
-
通常你会在加载 $parent 时使用查询并只加载你想要的孩子。 $parent = $repo->load($id,$params);与其说是形式问题,不如说是模型问题。
-
但是在模型中我没有问题,问题是当我想像Collection Type Form一样使用它时。
标签: forms collections symfony embed