Symfony2表单 - 在OneToMany关系中添加子对象时过滤父对象

时间:2012-01-26 00:08:19

标签: forms symfony

我有两个实体 - 具有OneToMany关系的类别和文章。

当我渲染用于添加/编辑文章对象的表单时,我在html选择中看到所有类别,但我想只看到一部分类别(将来我还想根据不同的情况添加类别条件)。

如何覆盖由Doctrine自动生成的查询,该查询会检索类别,以便过滤它们?

提前致谢, 尼古拉

2 个答案:

答案 0 :(得分:5)

在ArticleType的类别字段中传递query_builder参数,您可以自定义检索类别元素的查询。

$form = $this->createFormBuilder()
->add('category', 'entity', array(
'class' => 'ArticleBundle:Category',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('c')
                      ->orderBy('c.name', 'ASC');
                      //add more query elements here
                     },)
  )
->getForm();

查看更多详情here

答案 1 :(得分:1)

您可以通过将query_builder选项设置为一个闭包来接受存储库作为参数并返回查​​询构建器来完成此操作。