Symfony2:表单视图 - 在实体字段类型上添加另一个字段

时间:2011-12-09 12:13:42

标签: symfony

我的buildForm

FormType方法中包含以下代码
$builder->add('privileges', 'entity', array(
                'label' => 'Privileges',
                'expanded' => true,
                'multiple' => true,
                'class' => 'AcmeStoreBundle:AdminPrivilege',
                'property'=> 'description',
                'query_builder' => function(EntityRepository $er) use ($category)
                {
                            return $er->createQueryBuilder('p')
                                    ->where('p.categoryid = :categoryID')
                                    ->andWhere('p.parentid = -1')
                                    ->setParameter('categoryID', $category->getId())
                                    ->orderBy('p.position', 'ASC');
                }
            ));

如果parentid大于-1,那么我想在创建parentid大于-1的复选框后显示更多表单组件。

我搜索了Google并且无法找到方法来执行此操作,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

垫。 如果我理解正确,你可以从控制器注入parentid和实体管理器来形成类型构造。 因此,您可以在向构建器添加字段之前运行查询,并使用if-else。例如:

public function __construct($parentId, $em)
{
    $this->parentId = $parentId;
    $this->em = $em;
}

public function buildForm(FormBuilder $builder, array $options)
{
    $choices = $this->em->getRepository()->callNeededMethod();

    if($this->parentId){
        $builder->add([someFieldParams]);
    }else{
        $builder->add([anoutherFieldParams]);
    }
}